问题与this非常相似,但我对UIView更改isHidden
值时发生的事情感到很有兴趣。
例如:
| | |
-[ViewA]-[ViewB]-[ViewC]-
| | |
在选秀中:
[X]
- >视图
|
和-
- >约束
在以下情况下会发生什么:ViewB.isHidden = true
如何更正代码中显示/隐藏子视图(没有UIStackView
)的句柄?我应该手动将约束设置为活动/非活动吗?
答案 0 :(得分:1)
通常,隐藏视图(通过设置isHidden
)对布局没有影响。隐藏的视图参与布局。与视图相关的任何约束仍然是强制执行的。现在隐藏的视图占用的区域仍然为它保留。
这很有用,因为它允许您使用隐藏视图作为“间隔符”来创建您无法创建的布局(在Interface Builder中)。 (在代码中,您可以使用UILayoutGuide
而不是隐藏视图,但IB不支持创建布局指南。)
UIStackView
与其他观点不同。 UIStackView
会观察每个已排列的子视图的isHidden
属性。当排列的子视图的isHidden
发生更改时,UIStackView
会更新约束以生成或删除该子视图使用的区域。
没有其他视图执行UIStackView
所做的事情,因此当其子视图隐藏或可见时,其他任何视图都不会调整其布局。