0

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

2 回答 2

2

UIView类参考,框架属性:

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

当您还设置了变换时,不要为帧设置动画。改为使用边界和中心。

于 2013-03-27T07:38:01.700 回答
1

您遇到的问题似乎是您每次都在转换控件,当您第一次应用转换时,控件没有转换,但接下来您有一个转换,在这种情况下,下一个转换可能无法按您的意愿工作..你有几个选项来解决这个问题,我没有尝试过它可能工作的代码

tempLabel.transform = CGAffineTransformIdentity; 

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

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

以上将附加到您的最后一次转换..

希望能帮助到你。

谢谢。

于 2013-03-27T07:54:31.080 回答