从视图控制器动画负y源会破坏约束

时间:2016-02-16 09:52:32

标签: ios xcode animation autolayout nslayoutconstraint

我有2个视图控制器,我们可以在自动布局的故事板中调用它们ViewControllerAViewControllerB。我想在两个视图控制器之间设置幻灯片上/下动画的动画。

启动时屏幕上显示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值设置动画时,是否需要考虑一些特殊内容?

1 个答案:

答案 0 :(得分:1)

为约束而不是视图框架设置动画。使用自动布局时更改视图的框架可能会产生意外的结果,您应该始终认为它是不行的。要为约束设置动画,您需要做的就是调用:

constraint.constant += 200 // where constraint is NSLayoutConstraint
view.setNeedsUpdateConstraints()
UIView.animateWithDuration(0.3) { () -> Void in
    view.layoutIfNeeded()
}