我有2个视图控制器,我们可以在自动布局的故事板中调用它们ViewControllerA
和ViewControllerB
。我想在两个视图控制器之间设置幻灯片上/下动画的动画。
启动时屏幕上显示ViewControllerA
。触发操作时,我希望ViewControllerB
向下滑动,因此view.origin.y
的值在开始时为负值(-480),在动画结束时view.origin.y
为0。
然而,在做这个动画时,Xcode唠叨Unable to simultaneously satisfy constraints.
如果想要使用向上滑动动画从ViewControllerB
返回到ViewControllerA
的动画,那么ViewControllerA
s view.origin.y
在开始和结束时都是正值(480)动画的view.origin.y
为0,Xcode没有任何关于约束的内容。
在从负y值设置动画时,是否需要考虑一些特殊内容?
答案 0 :(得分:1)
为约束而不是视图框架设置动画。使用自动布局时更改视图的框架可能会产生意外的结果,您应该始终认为它是不行的。要为约束设置动画,您需要做的就是调用:
constraint.constant += 200 // where constraint is NSLayoutConstraint
view.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.3) { () -> Void in
view.layoutIfNeeded()
}