我不熟悉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];
}];
发生了一些奇怪的事情:按钮"跳跃"回到原来的位置,就像动画被取消一样。
这里发生了什么?
答案 0 :(得分:0)
如果您使用自动布局,则应该为约束设置动画而不是框架。例如,您可以为底部约束设置出口,并为此设置动画:
viewBottomConstraint.constant = 32;
[UIView animateWithDuration:0.5
animations:^{
[self.view layoutIfNeeded]; // Called on parent view
}];
}
您可以在文档here
中找到更多信息