【发布时间】:2013-01-12 11:10:30
【问题描述】:
我有一个 UIImageView,我正在基于用户滑动在屏幕上移动。我使用 Core Animation 完成了这项工作:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
movingView.frame = theRect;
[UIView commitAnimations];
它一开始总是很好,但在从其原始位置到“theRect”位置的中途,它停止并且 UIImageView 跳回到它的起点。它永远不会在同一点上。有时在跳回来之前几乎完全通过,有时只是几乎没有移动然后跳回来。在此之后没有其他代码正在运行。我试过改变持续时间,但似乎没有关系。
如果我添加:
[UIView setAnimationDidStopSelector:@selector(completeAnimation:finished:context:)];
[UIView setAnimationDelegate:self];
然后它实际上会延迟直到 Duration 完成并运行选择器,即使图像本身几乎立即停止并返回其起点。
希望有人能给我一些关于这里可能发生的事情的提示。
【问题讨论】:
-
我在您发布的代码中没有发现任何异常。根据症状,动画被触发两次是我最好的猜测。 NSLog(@"hello") 可以在提交之前吗?您应该只会看到一个“hello”。
-
它只会被触发一次。但是,我在这里发现了问题。当我取消选中情节提要的“使用自动布局”时,它可以正常工作。虽然它被检查,但它没有。我不确定我是否在这里遗漏了一些东西,如果这是一个错误,或者有一种编程方式不会让这种情况发生。如果有人知道,我很想听听如何保持自动布局并做到这一点。谢谢。