目的:
我有4个视图排列在另一个之下。视图还包含子视图。
假设视图按其顺序命名为 A , B , C 和 D 安排。
一次,我只需要显示 B 或 C 。
实施
autolayout
通过storyboard
添加相应的约束。NSLayoutConstraint
次观看 B 和 C 创建Height constraints
个出口。 在需要时更改约束出口的constant
属性,如下所示:
_heightConstraintOfC.constant = ORGINAL_VALUE_OF_C;
_heightConstraintOfB.constant = 0.00;
和
_heightConstraintOfB.constant = ORGINAL_VALUE_OF_B;
_heightConstraintOfC.constant = 0.00;
我得到了什么:
视图的行为符合预期,但当我将height constant
更改为zero
时,子视图保留在新重叠视图后面的相同位置。
在屏幕截图中,“登录”按钮位于视图 B 内,但即使视图 C 与其重叠,也会显示。
我尝试过的事情:
我尝试隐藏视图,即在显示 C 时隐藏 B 。这有效,但在使用autolayout
时似乎并不正确。
我也尝试过使用
[self.view layoutIfNeeded]
,[self.view layoutSubviews]
和[self.view setNeedsLayout]
。这没有任何帮助。
我的理解是您需要为视图中的所有内容添加约束,然后手动更新每个约束。这对我来说似乎不可行。
请提供您宝贵的建议或解决此问题的方法。谢谢!