激活和停用约束不更新视图框架
Activating and Deactivating Constraints Not Updating View Frame
我有一个包含标签和按钮的子视图,但是,并不总是需要按钮。如果需要 Button,Label 需要显示在视图的顶部,按钮显示在视图的底部。如果不需要Button,则需要在视图中间显示Label。
为此,我修改了三个约束:
- 按钮顶部的标签底部等于 0。(约束 1)
- Label bottom 到 Button top 大于等于 0 (Constraint3)
- 按钮高度(约束 3)
注意:Label 有一个顶部约束,视图设置为 0,Button 有一个底部约束,视图设置为 0。这些保持不变。
注意:所有约束都设置为安装并且按钮高度在构建时为 42
如果需要按钮,则卸载 Constraint1 并将 Constraint3 设置为 42。
如果不需要 Button,则安装 Constraint1 并将 Constraint3 设置为 0。
如您所见,这在故事板上按预期工作。但是,在代码中,不会反映该行为。如果需要按钮,我试试这个:
constraint3.constant = 42
self.view.removeConstraint(constraint1)
self.view.updateConstraints
但是我得到的结果不是预期的结果,就好像约束从未被删除过一样:
我卸载故事板中的约束,它看起来是正确的,但是当我卸载代码中的约束时,它并没有...我的代码中的 incorrect/missing 是什么使它正常工作?
改变这个
self.view.removeConstraint(constraint1)
至
parentView.removeConstraint(constraint1)
self.view.layoutIfNeeded()
需要从包含该约束的标签和按钮的父视图中删除该约束
我有一个包含标签和按钮的子视图,但是,并不总是需要按钮。如果需要 Button,Label 需要显示在视图的顶部,按钮显示在视图的底部。如果不需要Button,则需要在视图中间显示Label。
为此,我修改了三个约束:
- 按钮顶部的标签底部等于 0。(约束 1)
- Label bottom 到 Button top 大于等于 0 (Constraint3)
- 按钮高度(约束 3)
注意:Label 有一个顶部约束,视图设置为 0,Button 有一个底部约束,视图设置为 0。这些保持不变。
注意:所有约束都设置为安装并且按钮高度在构建时为 42
如果需要按钮,则卸载 Constraint1 并将 Constraint3 设置为 42。
如果不需要 Button,则安装 Constraint1 并将 Constraint3 设置为 0。
如您所见,这在故事板上按预期工作。但是,在代码中,不会反映该行为。如果需要按钮,我试试这个:
constraint3.constant = 42
self.view.removeConstraint(constraint1)
self.view.updateConstraints
但是我得到的结果不是预期的结果,就好像约束从未被删除过一样:
我卸载故事板中的约束,它看起来是正确的,但是当我卸载代码中的约束时,它并没有...我的代码中的 incorrect/missing 是什么使它正常工作?
改变这个
self.view.removeConstraint(constraint1)
至
parentView.removeConstraint(constraint1)
self.view.layoutIfNeeded()
需要从包含该约束的标签和按钮的父视图中删除该约束