我有一个UIButton只有4个与其高度,宽度,顶部,左边相关的约束。 当用户点击按钮时,我通过添加像这样的常量值来更新其顶部约束
[self.view layoutIfNeeded];
[UIView animateWithDuration:0.4 animations:^{
[self updateMyButtonConstraints];
[self.view layoutIfNeeded];
}];
-(void)updateMyButtonConstraints {
myTopButtonConstraint.constant = 10;
}
当我在iOS 8上运行我的应用程序时,它的工作就像一个魅力,但在iOS 7上,约束动画不起作用,按钮基本上从点a移动到点b而没有任何动画
PS:我试图在开始动画之前放置更新约束指令,但它也没有工作
我该怎么做才能解决这个问题?我做错了什么?谢谢你的帮助
答案 0 :(得分:4)
您以错误的顺序执行操作,并且您忘记通知布局系统需要布局。像这样:
[self updateMyButtonConstraints];
[self.view setNeedsLayout]; // not "layoutIfNeeded"!
[UIView animateWithDuration:0.4 animations:^{
[self.view layoutIfNeeded];
}];
在我的测试中,它可以在iOS 7,iOS 8和iOS 9中进行动画制作。如果它不适合您,那么您正在做其他未透露的事情。
答案 1 :(得分:0)
Swift版本在这里。
self.updateMyButtonConstraints()
self.view.setNeedsLayout()
UIView.animate(withDuration: 0.4) {
self.view.layoutIfNeeded()
}