我在UIView动画中遇到了一个奇怪的行为。我正在开发一个使用一些UIView动画的iPad应用程序。
所有动画的持续时间都设置为0.5。最初在启动应用程序时,所有动画都运行正常。但经过一段时间的连续使用后,没有动画发生,所有UIView的变化都很快发生,就像动画中没有设置持续时间一样。
我不确定为什么会这样。还有其他人遇到过这种问题吗?
以下是我正在使用的动画之一。像这样我使用了很多动画,但过了一段时间没有动画发生,但动画块内的所有代码都工作正常
[UIView animateWithDuration:0.5 animations:^{
[tempLabel setFont:titleFont.font];
[tempLabel setTransform: CGAffineTransformMakeRotation((-90 * M_PI / 180))];
tempLabel.frame = CGRectMake(2,0,23,30);
}];
答案 0 :(得分:2)
从UIView
class reference开始,帧属性:
可以设置对此属性的更改。但是,如果transform属性包含非标识变换,则frame属性的值是未定义的,不应修改。在这种情况下,您可以使用center属性重新定位视图,并使用bounds属性调整大小。
在设置变换时,不要为框架设置动画。改为使用边界和中心。
答案 1 :(得分:1)
您遇到的问题似乎是每次都在转换控件,当您第一次应用转换时,控件上没有转换,但接下来您有转换,在这种情况下,下一个转换可能不起作用如你所愿..你有几个选项可以解决这个问题,如下所示,我还没有尝试过可能有效的代码
tempLabel.transform = CGAffineTransformIdentity;
在应用任何转换之前放置上述代码,这将重置所应用的任何转换,并且您的新转换将被新应用,或者您可以执行
tempLabel.transform = CGAffineTransformConcat(tempLabel.transform, YOUR TRANSFORM);
上述内容将附加到您的上一次转型中。
希望它有所帮助。
感谢。