Iphone 核心动画和UIImageView返回到起始位置

Iphone 核心动画和UIImageView返回到起始位置,iphone,ios,Iphone,Ios,我有一个UIImageView,根据用户的滑动在屏幕上移动。我使用核心动画来实现这一点: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; movingView.frame = theRect; [UIView commitAnimations]; 它一开始总是很好,但在从其原始位置到“theRect”位置的过程中,它停止了,UIImageView跳回其起点。它永远不会在同一点上

我有一个UIImageView,根据用户的滑动在屏幕上移动。我使用核心动画来实现这一点:

 [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];
然后,它实际上会延迟,直到持续时间结束并运行选择器,即使图像本身几乎立即停止并返回到起点


希望有人能给我一些提示,说明这里可能发生了什么。

如果使用autolayout,您可以设置约束更改的动画,而不是设置帧更改的动画(因为重新应用约束时,将恢复原始位置)。请参阅以获取示例。

我在您发布的代码中没有发现任何异常。根据症状,动画被触发两次是我最好的猜测。是否可以在提交之前将NSLog(@“hello”)记录下来?你应该只看到一个“你好”,它只会被触发一次。然而,我发现了这个问题。当我取消选中故事板的“使用自动布局”时,它会正常工作。当它被检查时,它不会。我不确定我是否遗漏了什么,这是否是一个bug,或者是否有一种编程方法不让这种情况发生。如果有人知道,我很想听听如何保持自动布局并做到这一点。谢谢。我相信自动布局有很好的理由,而且对系统来说是新的,但每次我转过头来,都有理由取消选中自动布局。它似乎过于复杂,而以前管理视图的方法似乎更简单、更直接。是否有一个好的教程可以解释为什么Autolayout是一件好事(如果是的话)?但是谢谢你的例子。这很有帮助。@MichaelReiland我一定错过了你在这里的评论:我建议观看WWDC 2012的视频,包括一个、一个视频和一个视频。这正是我想要的答案!我的iphone版本的应用程序一切正常,但我不明白为什么每次我在ipad版本上出现弹出窗口或其他动作时,uiimageview都会返回到起始位置。我关闭了自动布局,一切都开始正常工作。