当视图开始被隐藏时,约束会发生什么?

时间:2018-05-10 14:31:20

标签: ios autolayout uikit

问题与this非常相似,但我对UIView更改isHidden值时发生的事情感到很有兴趣。

例如: | | | -[ViewA]-[ViewB]-[ViewC]- | | |

在选秀中:

[X] - >视图

|- - >约束

在以下情况下会发生什么:ViewB.isHidden = true如何更正代码中显示/隐藏子视图(没有UIStackView)的句柄?我应该手动将约束设置为活动/非活动吗?

1 个答案:

答案 0 :(得分:1)

通常,隐藏视图(通过设置isHidden)对布局没有影响。隐藏的视图参与布局。与视图相关的任何约束仍然是强制执行的。现在隐藏的视图占用的区域仍然为它保留。

这很有用,因为它允许您使用隐藏视图作为“间隔符”来创建您无法创建的布局(在Interface Builder中)。 (在代码中,您可以使用UILayoutGuide而不是隐藏视图,但IB不支持创建布局指南。)

UIStackView与其他观点不同。 UIStackView会观察每个已排列的子视图的isHidden属性。当排列的子视图的isHidden发生更改时,UIStackView会更新约束以生成或删除该子视图使用的区域。

没有其他视图执行UIStackView所做的事情,因此当其子视图隐藏或可见时,其他任何视图都不会调整其布局。