iOS – 在UILabel或UITextView中animation文字大小的变化?

在显示文本块的应用程序中,当设备转向横向时,字体大小会增加。 我不喜欢整个animation是如何做的,然后突然跳到新的尺寸,所以我想在旋转的过程中animation尺寸的变化。

我读了一个在UIViewanimation块中抛出这个改变的地方是行不通的,因为font属性不是可以animation的,那么我的select是什么呢?

对于我的具体实现,我不是简单地按比例缩放UILabel / UITextView ; 框的边界比字体大小增加(比例),所以文本中会有回stream。 那个我能接受。

编辑:我会很好简单地缩放UITextView

此外,我正在考虑手动“animation”:我有一个方法,列出我的意见,并调整字体大小。 如果我知道旋转即将开始的时间,以及animation的持续时间,我可以将它计时,以便在animation中间呈现中间字体或两个中间字体。 任何帮助获得这些将不胜感激。

如果我知道旋转即将开始的时间,以及animation的持续时间…

有趣的是,你应该提一提。 就在animation开始之前,你的视图控制器将会收到一个willAnimateRotationToInterfaceOrientation:duration:消息,给你提供你需要的确切信息。

一个select是淡出旧的文本,改变字体大小,并淡入回来。font属性可能不是animation,但阿尔法是。 由于alpha是UIView的一个属性,所以你可以用同样的方法处理所有的文本方向的视图:UILabel,UITextView等。它看起来也不错。

一种方法可以是:

  1. 创build一个CAKeyframeAnimation
  2. 使用一组CATransform3D对象定义在该animation期间要实现的缩放和旋转
  3. 将这些转换添加到您的关键帧animation
  4. addAnimation消息发送到您的标签图层对象: [[label layer] addAnimation] ;

假设你的yourLabel是你想缩放和旋转的UILabel这里是一个代码示例:

 CAKeyframeAnimation *scale = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; CATransform3D scaleUp = CATransform3DMakeScale(1.5, 1.5, 1); // Scale in x and y CATransform3D rotationScaled = CATransform3DRotate (scaleUp, 90, 0, 0, 1); // Rotate the scaled font [scale setValues:[NSArray arrayWithObjects: [NSValue valueWithCATransform3D:CATransform3DIdentity], [NSValue valueWithCATransform3D:rotationScaled], nil]]; // set the duration [scale setDuration: 1.0]; // animate your label layer [[yourLabel layer] addAnimation:scale forKey:@"scaleText"]; 

这通常是如何弹跳的文本将被animation。

您可以在设备开始旋转时开始播放,旋转完成后检索animation,以便您可以使用正确的比例/位置更新标签。

您将需要调整以find适当的时间和旋转。

调用didAnimateFirstHalfOfRotationToInterfaceOrientation:时更改字体大小。 这样一旦旋转完成,用户将看不到更改。 随着旋转的发生,这将很难看到字体大小的变化!

Interesting Posts