在 Auto layout 下应用 UIView 动画

在之前不使用 Autolayout 时,如果需要做简单的 UIView 动画,只需要:

1
2
3
[UIView animateWithDuration:0.25 animations:^{
[_topView setFrame:CGRectMake(0,0,100,35)];
}];

但是使用 Autolayout,不能再手动去更改 frame。而且我们会发现,如果按照之前的做法直接改写成:

1
2
3
[UIView animateWithDuration:0.25 animations:^{
[_constraintTopViewHeight setConstant:35];
}];

是没有动画效果的,依然会瞬间改变它的约束。

正确的方法是:

1
2
3
4
[_constraintTopViewHeight setConstant:35];
[UIView animateWithDuration:0.25 animations:^{
[self.view layoutIfNeeded];
}];