有没有办法让 UIStackView 的子视图在隐藏时参与自动布局?
Is there a way to keep subviews of a UIStackView participating in autolayout when they're hidden?
我在我的最新项目中引入了一些 UIStackView,因为它使视图间距和添加其他自动布局约束变得容易得多。
只有当自动布局完成它的工作时才发现 UIStackView 中的隐藏视图不再 'participate'。
我想这通常是一个很棒的功能,但对于我不想要的这个特定视图,有没有办法让 UIStackView 的子视图表现得就像它们嵌入到普通 UIView 中一样?
或者我别无选择,只能求助于删除 UIStackViews? (并添加了大量烦人的 'spacer' 视图和约束)
根据设计,隐藏 排列的子视图不仅被隐藏,而且也不再影响布局。这是自动布局无法轻松实现的主要功能。
如果你想避免这种情况,那么你可以将你的视图包裹在另一个视图中。不是隐藏 UIStackView 的直接子视图(新设置中的包装视图),而是隐藏内部视图(与旧设置中的方式相同,只是它现在是嵌套的)。由于直接子视图可见,UIStackView 不会回收 space。但是用户看不到任何内容,因为查看内容是隐藏的。
您可以将其 alpha 设置为 0,而不是隐藏子视图。这样子视图将不可见,但会参与布局。
我在我的最新项目中引入了一些 UIStackView,因为它使视图间距和添加其他自动布局约束变得容易得多。
只有当自动布局完成它的工作时才发现 UIStackView 中的隐藏视图不再 'participate'。
我想这通常是一个很棒的功能,但对于我不想要的这个特定视图,有没有办法让 UIStackView 的子视图表现得就像它们嵌入到普通 UIView 中一样?
或者我别无选择,只能求助于删除 UIStackViews? (并添加了大量烦人的 'spacer' 视图和约束)
根据设计,隐藏 排列的子视图不仅被隐藏,而且也不再影响布局。这是自动布局无法轻松实现的主要功能。
如果你想避免这种情况,那么你可以将你的视图包裹在另一个视图中。不是隐藏 UIStackView 的直接子视图(新设置中的包装视图),而是隐藏内部视图(与旧设置中的方式相同,只是它现在是嵌套的)。由于直接子视图可见,UIStackView 不会回收 space。但是用户看不到任何内容,因为查看内容是隐藏的。
您可以将其 alpha 设置为 0,而不是隐藏子视图。这样子视图将不可见,但会参与布局。