iOS中的动画错误

iOS中的动画错误,ios,objective-c,uiviewanimation,Ios,Objective C,Uiviewanimation,我正在尝试一个简单的动画,当按下按钮时移动UIView的一个子类。当按下按钮时,视图将从原始位置移动xx个单位,错误在于它在离开xx个单位后返回原始位置。我希望它停在新的位置。我的代码有什么问题 [UIView animateWithDuration:0.5f animations:^{ self.analogStick.frame = CGRectOffset(self.analogStick.frame, 0, -10); }]; 将布局约束从Interface Builder连接

我正在尝试一个简单的动画,当按下按钮时移动UIView的一个子类。当按下按钮时,视图将从原始位置移动xx个单位,错误在于它在离开xx个单位后返回原始位置。我希望它停在新的位置。我的代码有什么问题

[UIView animateWithDuration:0.5f animations:^{
    self.analogStick.frame = CGRectOffset(self.analogStick.frame, 0, -10);
}];

将布局约束从Interface Builder连接到代码中。然后在块的开头,将约束的常量设置为所需的值,例如,将左约束设置为superview,使其常量为-10


然后,在动画块代码中,只需调用
[self layoutifneed]
。使用约束时,不要以任何方式设置帧(可以使用3D变换,但我个人不建议这样做,除非您确切知道自己在做什么)。

问题是,您正在为定义了自动布局约束的视图设置动画。要对此设置动画,您必须为顶部约束添加一个出口,更改其
常量
属性,然后设置调用
layoutifneedd
的动画。请参阅。@Rob,这解释了当您第一次加载视图并显示动画时,即使在加载视图后,动画是否仍能工作?每次按下按钮时动态更新位置?是的,在点击按钮时,调整顶部约束的
常数
,然后设置调用
layoutifneed
的动画。它不会设置动画。它只是出现在新位置,
self.top.constant=-120;[UIView animateWithDuration:2.0f动画:^{self.analogStick.layoutifneed;}]有关其他想法,请参见下面的讨论。但这是设置约束动画的方法。确保您正在相应的superview上调用
layoutifneed