Animation UIView动画撤消上一个动画

Animation UIView动画撤消上一个动画,animation,ios7,uikit,Animation,Ios7,Uikit,我有三个UIIMAGEVIEW(A、B、C)并排排列在UIView中。在第一个UIImageView(A)后面,有一个简单的UIView(我们称之为X),背景为绿色。当用户点击其中一个a、B、C图像视图时,我移动(并设置动画)背景视图X,使其中心与点击的视图中心相等。例如,如果X最初在A后面,而B被点击,则将执行以下代码: [UIView animateWithDuration:0.5 animations:^{ X.center = B.center }

我有三个UIIMAGEVIEW(A、B、C)并排排列在UIView中。在第一个UIImageView(A)后面,有一个简单的UIView(我们称之为X),背景为绿色。当用户点击其中一个a、B、C图像视图时,我移动(并设置动画)背景视图X,使其中心与点击的视图中心相等。例如,如果X最初在A后面,而B被点击,则将执行以下代码:

[UIView animateWithDuration:0.5 
                 animations:^{ X.center = B.center } 
                 completion:nil]; 
这会把X移到B后面

现在,我的窗口还包含另一个视图(我们称之为V),点击该视图时,它通过调用

[UIView animateWithFramesWithDuration ... ]

但是,当此动画完成时,第一个动画将撤消(X始终移动到A的后面)。为什么会发生这种情况?我能做些什么来解决这个问题

问题似乎只存在于情节提要中创建的ui视图中。对于以编程方式创建的ui视图,问题不会显现

正如您在中所说,这仅在故事板中创建的视图中是可复制的。情节提要中是否启用了自动布局?如果是这样的话,您不应该设置
center
的动画,如果是这样的话,我希望看到您的行为。以编程方式创建视图时,如果未将
translatesAutoResizezingMaskintoConstraints
设置为
NO
,则动画应在设置
中心动画时按预期工作


设置由自动布局约束管理的视图动画的正确方法是更新约束以表示新布局,然后在
[UIView animateWith…]
块中,在相应视图上调用
-layoutifneed

谢谢。虽然我没有在视图中使用任何约束,但确实启用了自动布局。我相信Xcode在故事板中为未设置约束的任何视图设置了隐式约束。基本上,在Xcode 5中启用自动布局后,视图的行为就好像它们有默认的自动调整大小遮罩一样,直到您设置自己的约束为止。比Xcode 4坚持始终使用有效约束要好得多,这使得它们很难使用。