UIView动画中的奇怪行为

时间:2013-03-27 06:23:58

标签: iphone ios ipad

我在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);   
}];

2 个答案:

答案 0 :(得分:2)

UIView class reference开始,帧属性:

  

可以设置对此属性的更改。但是,如果transform属性包含非标识变换,则frame属性的值是未定义的,不应修改。在这种情况下,您可以使用center属性重新定位视图,并使用bounds属性调整大小。

在设置变换时,不要为框架设置动画。改为使用边界和中心。

答案 1 :(得分:1)

您遇到的问题似乎是每次都在转换控件,当您第一次应用转换时,控件上没有转换,但接下来您有转换,在这种情况下,下一个转换可能不起作用如你所愿..你有几个选项可以解决这个问题,如下所示,我还没有尝试过可能有效的代码

tempLabel.transform = CGAffineTransformIdentity; 

在应用任何转换之前放置上述代码,这将重置所应用的任何转换,并且您的新转换将被新应用,或者您可以执行

tempLabel.transform = CGAffineTransformConcat(tempLabel.transform, YOUR TRANSFORM);

上述内容将附加到您的上一次转型中。

希望它有所帮助。

感谢。