iOS UIView块动画停止实际动画

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版本的问题?

谢谢,

迈克尔


我不确定你的应用程序是否同时运行了很多动画(可能的原因),如果是这样,是否有多个动画块在操作同一个对象。 - Kai Huppmann
可能是由于多个动画块同时运行所致。我会尝试查看是否是这种情况。谢谢! - user1360726
3个回答

1

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

我发现我正在保留一些不可见的UIImageView,因为我想稍后再次显示它们。删除它们并释放UIImage解决了问题。现在我需要想办法恢复这些图像,但至少动画效果符合预期。


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

谢谢Dean。我会尝试一下这些东西的。 - user1360726

0

当你使用变换时,如果你单独使用它们,动画的行为可能会非常不可预测。为了避免这种情况,你应该通过CGAffineTransformConcat将所有的变换连接成一个单一的变换,并对该单一变换进行动画处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接