设置UIButton的标题会取消动画

时间:2015-09-15 14:07:41

标签: objective-c animation

我不熟悉iOS动画,这是我的问题:

在我们的应用程序的登录屏幕上,有一个登录按钮。单击该按钮时,我们需要将其向上移动然后更改其标题。向上移动就像这样:

[UIView animateWithDuration:0.5
                 animations:^{
                                loginButton.frame = newLoginButtonFrame;
                            }
                 completion:^ (BOOL finished) {
                            }];

这可以按预期工作。

然后我们尝试在完成回调中更改标题,如下所示:

[UIView animateWithDuration:0.5
                 animations:^{
                                loginButton.frame = newLoginButtonFrame;
                            }
                 completion:^ (BOOL finished) {
                                [loginButton setTitle:@"Cancel" forState:UIControlStateNormal];
                            }];
发生了一些奇怪的事情:按钮"跳跃"回到原来的位置,就像动画被取消一样。

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

如果您使用自动布局,则应该为约束设置动画而不是框架。例如,您可以为底部约束设置出口,并为此设置动画:

viewBottomConstraint.constant = 32;
[UIView animateWithDuration:0.5
    animations:^{
        [self.view layoutIfNeeded]; // Called on parent view
    }];
}

您可以在文档here

中找到更多信息