非活动约束变为活动状态?

时间:2015-02-25 15:57:30

标签: ios autolayout

我在故事板中制作了一个约束,并连接到我的视图控制器中的变量。在updateViewConstraints中,我将约束的active属性设置为false。

当我这样做时

self.view.setNeedsUpdateConstraints()
self.view.layoutIfNeeded()

viewDidLoad中,layoutIfNeeded调用updateViewConstraints将约束设置为不活动,但之后在某处将约束设置为活动,然后UIViewAlertForUnsatisfiableConstraints符号断点为由于与我的其他约束冲突而命中。当我在此断点处检查堆栈中.active的值时,它是true

这只发生在viewDidLoad。在屏幕上显示视图之前,再次调用updateViewConstraints,这次将约束设置为不活动的指针并且布局正确。我仍然在控制台中得到冲突的约束错误。这是一个错误吗?

编辑:这是导致将约束设置为活动的堆栈跟踪: enter image description here

1 个答案:

答案 0 :(得分:2)

active属性实际上是一个虚拟属性,仅指示是否已安装约束。如果将其设置为true,则会将其自身安装到两个视图中最近的共同祖先中。所以它变得活跃,因为在故事板中它被安装在视图中。要解决我的问题,我只是在故事板中取消Installed