我有一个包含Label和Button的子视图,但是并不总是需要该按钮。如果需要按钮,则标签需要显示在视图的顶部,按钮应显示在视图的底部。如果不需要按钮,则标签需要显示在视图的中间。
为此,我修改了三个约束:
注意:Label的顶部约束条件为0,而Button的底部约束条件为0。
注意:所有约束均已设置为安装,并且在构建时按钮高度为42
如果需要该按钮,则Constraint1将被卸载,而Constraint3将被设置为42。
如果不需要按钮,则将Constraint1安装并且Constraint3设置为0。
如您所见,这可以按预期在情节提要上起作用。但是,在代码中,行为没有得到体现。如果需要该按钮,请尝试以下操作:
constraint3.constant = 42
self.view.removeConstraint(constraint1)
self.view.updateConstraints
但是,除了预期的结果,我得到的结果似乎是从未删除约束:
我在情节提要中卸载了约束,它看起来是正确的,但是当我在代码中卸载了约束时,它没有...为了使它正常工作,我的代码有什么不正确/遗漏了?
答案 0 :(得分:0)
更改此
self.view.removeConstraint(constraint1)
到
parentView.removeConstraint(constraint1)
self.view.layoutIfNeeded()
此约束需要从标签和包含该约束的按钮的父视图中删除