相对于堆栈视图高度约束 UIStackView 的子视图

Posted

技术标签:

【中文标题】相对于堆栈视图高度约束 UIStackView 的子视图【英文标题】:Constrain subview of UIStackView relative to stack view height 【发布时间】:2017-12-28 21:13:22 【问题描述】:

我有一个可以包含 1-3 个子视图的垂直堆栈视图。子视图的高度应该是堆栈视图高度的 1/3,即使只有一两个。

我尝试添加:

view.heightAnchor.constraint(equalTo: stack.heightAnchor, multiplier: 0.3)

但它会引发约束冲突,因为堆栈视图将子视图固定在顶部和底部。

有没有办法用UIStackView 做到这一点?

【问题讨论】:

【参考方案1】:

您可以通过将一个堆栈视图嵌套在另一个堆栈视图中轻松完成此操作,为每个视图使用正确的设置并将橙色子视图(它们是内部堆栈视图的子视图)限制到外部堆栈视图的高度。这是一个显示设置和必要的堆栈视图属性的图表:

【讨论】:

这是一张很棒的图表,谢谢!我想知道你是怎么想的,这里是否有一个普遍的原则在起作用?我没有太多使用堆栈视图,因为我一直支持 ios 8。 我只是在堆栈视图和自动布局方面做了很多练习 :) 对于很多间距和对齐方案,嵌套堆栈视图绝对是一种常见/鼓励的解决方案。这是来自 Apple 的一个很好的演示:developer.apple.com/videos/play/wwdc2015/218

以上是关于相对于堆栈视图高度约束 UIStackView 的子视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UIStackView 中保留隐藏视图的约束

以编程方式填充 UIStackView

UIStackView 动态高度图片

动态 UIStackView 与普通约束

UIStackView 没有在 UIScrollView 内调整其宽度

基于子视图的 UIStackView 容器视图高度