【发布时间】:2019-08-26 09:23:39
【问题描述】:
假设如下,简单的布局:
- 三个视图垂直堆叠在一起
- 在视图之间使用简单的垂直间距
是否可以仅使用约束/自动布局来隐藏包括其边距在内的红色视图?
- 设置
redView.isHidden = true将隐藏红色视图但不会改变蓝色视图的位置。蓝色视图将保持在与红色视图可见时相同的位置。 - 使用
redView.removeFromSuperview()完全删除红色视图将显示所需的结果。由于它对绿色视图的可选间距限制,蓝色视图将移动到红色视图所在的位置。然而,重新显示红色视图会非常困难,因为它的所有约束都必须从头开始设置。
在 Android 中,将可见性设置为 View.INVISIBLE 只是隐藏了一个视图(如这里描述的第一种情况),而 View.GONE 呈现剩余的布局,就好像视图根本不存在一样。
这可以在 iOS 上仅使用约束/自动布局来完成吗?
当然,我可以通过手动操作约束并在代码中设置新约束来实现相同的购买。但问题是,有没有像 Android 那样更方便的解决方案?
【问题讨论】:
-
我不知道这是不是个好主意。我们可以采用标签高度约束插座并以编程方式将其设置为 0 或 40?
-
我经常通过以编程方式将受影响约束的优先级设置为 750(高)或 250(低)来实现此目的。这样你就可以在你想要“控制”的约束之间切换。
-
@Andrei Herford,使用垂直堆栈视图。下面的答案是正确的。
标签: ios autolayout nslayoutconstraint ios-autolayout