我在故事板中制作了一个约束,并连接到我的视图控制器中的变量。在updateViewConstraints
中,我将约束的active
属性设置为false。
当我这样做时
self.view.setNeedsUpdateConstraints()
self.view.layoutIfNeeded()
在viewDidLoad
中,layoutIfNeeded
调用updateViewConstraints
将约束设置为不活动,但之后在某处将约束设置为活动,然后UIViewAlertForUnsatisfiableConstraints
符号断点为由于与我的其他约束冲突而命中。当我在此断点处检查堆栈中.active
的值时,它是true
。
这只发生在viewDidLoad
。在屏幕上显示视图之前,再次调用updateViewConstraints
,这次将约束设置为不活动的指针并且布局正确。我仍然在控制台中得到冲突的约束错误。这是一个错误吗?
编辑:这是导致将约束设置为活动的堆栈跟踪:
答案 0 :(得分:2)
active
属性实际上是一个虚拟属性,仅指示是否已安装约束。如果将其设置为true
,则会将其自身安装到两个视图中最近的共同祖先中。所以它变得活跃,因为在故事板中它被安装在视图中。要解决我的问题,我只是在故事板中取消Installed
。