在我的故事板中,我设置了以下约束。
left side constraint for a view = 9;
right side constraint for a view = 9;
(so I have 9 pixels space on both sides)
这些约束在我的VC中设置为常量。
confirmLocationViewLeftsideConstraint
confirmLocationViewRightsideConstraint
现在,当我的应用程序加载时,我希望此视图关闭屏幕,然后在屏幕上设置动画,以便我通过代码设置约束。
self.confirmLocationViewLeftsideConstraint.constant = 400.0f;
self.confirmLocationViewRightsideConstraint.constant = -409.0f;
但是这会导致应用程序崩溃并出现以下错误:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x175f1bb0 H:|-(400)-[UIView:0x175f0080] (Names: '|':UIView:0x175f1be0 )>",
"<NSLayoutConstraint:0x1761a6b0 H:[UIView:0x175f0080]-(9)-| (Names: '|':UIView:0x175f1be0 )>",
"<NSAutoresizingMaskLayoutConstraint:0x1b387bf0 h=--& v=--& H:[UIView:0x175f1be0(320)]>"
)
对我来说这是说当右边是9时你不能将confirmLocationViewLeftsideConstraint设置为400但是我上面的下一行代码是将confirmLocationViewRightsideConstraint设置为-409所以它应该可以工作,但是我可以&# 39; t在同一时间设置这两个。
有没有更好的方法来实现滑动视图的开启和关闭?或者在代码中设置它们的更好方法?我需要在故事板中设置布局约束,因为它是一个非常详细的视图,有超过70个约束来保持间距。
答案 0 :(得分:1)
在我看来,有两个必须同步更新的约束表明你使用了错误的约束。你可以对前缘有一个约束,然后有一个约束使视图的宽度等于超视图的宽度 - 18.这样,你只需要调整前导约束的常量,然后两个边移动。
另一种方法是从superview中删除这两个约束(确保你的引用很强,所以不释放约束),调整它们,然后重新添加它们。
前一种方法使动画更简单,因为您只需要为一个约束的常量设置动画(而不是为布局设置动画)。