使用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版本?
谢谢,
迈克尔
答案 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) {
} ];