我一直试图想出一个很好的方法来平滑地动画UILabel上的帧大小变化,而不需要一个奇怪的起始跳转重绘.默认情况下,当我做这样的事情时:
// Assume myLabel frame starts as (0, 0, 100, 200)
[UIView beginAnimations:@"myAnim" context:NULL];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:1.0];
myLabel.frame = CGRectMake(0.0, 0.0, 50, 100);
[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)
我得到了一个带有标签的平滑动画,但是它的方式是它将重绘的图像层用于标签的目标大小,并将内容拉伸以适应当前的动画然后动画到目标矩形.这最终会在文本显示中出现非常奇怪的跳跃.这里有两个图像显示动画前的外观,然后在动画开始后:
预动画

后期动画

我试图仅使用图层来设置动画,但我仍然遇到同样的问题.
所以问题是,我该如何避免这种情况?
谢谢你的帮助,
斯科特