4

我在使用基于块的 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 版本?

谢谢,

迈克尔

4

3 回答 3

1

检查您的内存使用情况。我看到的和你一样——最终所有的动画都停止了工作。动画甚至没有为我运行,完成块也没有触发。

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

于 2012-11-26T07:10:42.607 回答
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) { 
               } ];
于 2012-04-27T11:43:54.777 回答
0

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

于 2012-04-27T11:10:20.110 回答