我们可以试着在storyboard中设置了一个view控件的的约束大小,然后通过拖线的方式去把这个view在控制器中引用,然后在代码中我们就可以修改这个view的相应的约束对象的值了,就比如说我们拖线过来引用的属性是NSLayoutConstraint * ViewTop,然后我们如果调用下面代码想用动画的效果让控件发生移动是不行的。
[UIView animateWithDuration:1.5 animations:^{
self.ViewTop.constant+=50;
}];
因为这只是修改了约束条件,系统不一定在什么时候去调用更新frame的代码,系统会自动的调用,我们要手动调用也可以就是调用layoutIfNeeded来更新frame。
我们应该这么做
self.ViewTop.constant+=50;
[UIView animateWithDuration:1.0 animations:^{
[self.ViewTop layoutIfNeeded];
}];