iOS UIView块动画停止实际动画

问题描述:

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

[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版本?

感谢,

迈克尔

+0

如果您的应用程序中有很多动画同时运行(可能是什么原因),如果有多个动画块正在操作同一个对象,那么我不会收到这些动画。 – 2012-04-27 09:40:06

+0

这可能是由于许多动画块可能会同时运行。我会试着看看是否是这种情况。谢谢! – user1360726 2012-04-30 13:58:57

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

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

比如我在这里让用户互动,让美景动画过程中重新绘制自己:

[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) { 
       } ]; 
+0

谢谢Dean。我会放弃这些。 – user1360726 2012-04-30 13:58:23

检查你的内存使用情况。我看到了同样的事情 - 最终所有的动画都停止了工作。动画甚至没有运行,完成块没有开火。

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