iOS – 在UILabel或UITextView中animation文字大小的变化?
在显示文本块的应用程序中,当设备转向横向时,字体大小会增加。 我不喜欢整个animation是如何做的,然后突然跳到新的尺寸,所以我想在旋转的过程中animation尺寸的变化。
我读了一个在UIView
animation块中抛出这个改变的地方是行不通的,因为font属性不是可以animation的,那么我的select是什么呢?
对于我的具体实现,我不是简单地按比例缩放UILabel
/ UITextView
; 框的边界比字体大小增加(比例),所以文本中会有回stream。 那个我能接受。
编辑:我会很好简单地缩放UITextView
。
此外,我正在考虑手动“animation”:我有一个方法,列出我的意见,并调整字体大小。 如果我知道旋转即将开始的时间,以及animation的持续时间,我可以将它计时,以便在animation中间呈现中间字体或两个中间字体。 任何帮助获得这些将不胜感激。
如果我知道旋转即将开始的时间,以及animation的持续时间…
有趣的是,你应该提一提。 就在animation开始之前,你的视图控制器将会收到一个willAnimateRotationToInterfaceOrientation:duration:
消息,给你提供你需要的确切信息。
一个select是淡出旧的文本,改变字体大小,并淡入回来。font属性可能不是animation,但阿尔法是。 由于alpha是UIView的一个属性,所以你可以用同样的方法处理所有的文本方向的视图:UILabel,UITextView等。它看起来也不错。
一种方法可以是:
- 创build一个CAKeyframeAnimation
- 使用一组CATransform3D对象定义在该animation期间要实现的缩放和旋转
- 将这些转换添加到您的关键帧animation
- 将
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:
时更改字体大小。 这样一旦旋转完成,用户将看不到更改。 随着旋转的发生,这将很难看到字体大小的变化!