iOS UIView块动画停止实际动画

时间:2012-04-27 09:05:36

标签: iphone uiviewanimation

使用UIView基于块的动画我遇到了一个奇怪的问题。我的应用程序在滚动视图中包含各种图像,并且在设备上使用应用程序一段时间后,UIView动画块中的所有动画(例如下面的动画)都会停止动画。处理动画(在下面的示例代码中,pageView确实移动了)但是这个更改没有动画并且立即发生。

[UIView animateWithDuration:0.5 animations:^
{ 
     self.pageView.center = CGPointMake(self.view.frame.size.width/2, 704.0/2);
     self.pageView.transform = CGAffineTransformIdentity;
} 
completion:^(BOOL finished)
{
     NSLog(@"complete");
}];

有没有其他人经历过类似的行为?我在5.1上使用iPad,我想知道它是否可以归结为iOS版本?

谢谢,

迈克尔

3 个答案:

答案 0 :(得分:1)

检查您的内存使用情况。我看到的是同样的事情 - 最终所有的动画都停止了工作。这些动画甚至都不适用于我,并且完成块没有被解雇。

我发现我正在抓住一些不再可见的UIImageViews,因为我想稍后重新显示它们。删除它们并释放UIImage使问题消失。我现在需要弄清楚我将如何取回图像,但至少动画按预期工作。

答案 1 :(得分:0)

当您使用变换时,如果单独使用动画,动画可能会产生非常不可预测的行为。为了避免这种情况,您应该通过CGAffineTransformConcat将所有变换连接成一个变换并为该单个变换设置动画。

答案 2 :(得分:0)

尝试使用一些动画选项,看看是否有帮助?

例如,我在这里让用户进行交互,并让动画在动画中重绘:

[UIView animateWithDuration:0.5
                      delay:0
                    options: UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionAllowAnimatedContent   
                 animations:^ {
                    self.pageView.center = CGPointMake(self.view.frame.size.width/2, 704.0/2);
                    self.pageView.transform = CGAffineTransformIdentity;
               } completion:^ (BOOL finished) { 
               } ];