【发布时间】:2018-12-17 14:14:09
【问题描述】:
我有一个包含标签和按钮的子视图,但是,并不总是需要该按钮。如果需要 Button,Label 需要显示在视图的顶部,按钮显示在视图的底部。如果不需要 Button,则需要在视图中间显示 Label。
为此,我修改了三个约束:
- 标签底部到按钮顶部等于 0。(约束 1)
- 标签底部到按钮顶部大于或等于 0(约束 3)
- 按钮高度(约束 3)
注意:标签有一个顶部约束,视图设置为 0,按钮有一个底部约束,视图设置为 0。这些保持不变。
注意:所有约束都设置为安装,并且在构建时按钮高度为 42
如果需要 Button,则卸载 Constraint1,并将 Constraint3 设置为 42。
如果不需要 Button,则安装 Constraint1 并将 Constraint3 设置为 0。
如您所见,这在情节提要上按预期工作。但是,在代码中,行为并没有体现出来。如果需要按钮,我试试这个:
constraint3.constant = 42
self.view.removeConstraint(constraint1)
self.view.updateConstraints
但我得到的结果不是预期的结果,就好像约束从未被删除:
我在情节提要中卸载了约束,它看起来是正确的,但是当我在代码中卸载约束时,它并没有...我的代码中有什么不正确/缺少的地方才能使其正常工作?
【问题讨论】:
-
您希望视图的高度保持不变吗?或者如果不需要按钮,视图高度是否应该改变?
-
视图的高度是恒定的。
-
好的 - 您是否要从视图中删除该按钮?你想让标签垂直居中吗?还是您希望它填充视图的高度?
-
并且...有点令人困惑...您的第三张图片是您希望在需要按钮时的外观吗,以及您的第二张图片是您想要的外观吗? 没有按钮?所以你的第一张图片不是任何一种情况的“最终结果”?
标签: ios swift storyboard nslayoutconstraint