定义堆栈视图中的视图宽度?

时间:2017-10-30 05:20:31

标签: ios swift autolayout uistackview

我想在stackviews的帮助下创建一个类似于设计的图形。我在stackview中添加了5个视图水平。现在我想做的是给出一个高度为25和25的单个视图。使堆栈视图的属性具有相同的宽度,但不知怎的,我无法做到这一点。我不得不给予领先& amp;落后于stakview&在领先的基础上计算了视图的尾随内部宽度。但是作为领先&所有设备的尾随都是静态的。我试图给堆栈视图水平和放大垂直中心,但没有奏效。

这是我的约束

enter image description here

enter image description here

为什么我必须给予领先&用于计算stackview内部视图的内部宽度的尾随。

为什么我不能使用垂直&堆栈视图的水平中心&让堆栈视图使用我为单个视图定义的宽度?

2 个答案:

答案 0 :(得分:2)

您需要解决视图的歧义,以便视图引擎可以确切地确定绘制视图的方式。引擎总是需要知道视图应该如何水平放置,因为在iPad的情况下,其他子视图必须扩展太多;因此,如果我们指定前导和尾随,它可以根据需要进行扩展,或者如果我们希望它们不会以超过指定的速度增加,那么它可以在前导和尾随中留出一些空间并限制扩展。取决于你的需要

我建议您将此图表的父视图视为等于widhts和相等高度(或提供0.95的乘数)的解决方案,以便它可以在所有屏幕尺寸上良好显示。

花些时间阅读歧义和冲突。这将有助于您获得所需的视图,而无需太多的思考

答案 1 :(得分:0)

设置stackview = 0

的前导,尾随和顶部约束

设置stackview的高度限制

设置stackview Distribution属性= Equal spacing

在stackview中的第一个位置添加其他视图,宽度约束= 0

在stackview中的最后位置添加其他视图,宽度约束= 0

将五个彩色视图宽度约束设置为宽度

将第一个彩色视图宽度属性设置为与主视图相等的宽度;乘数= 1:11

enter image description here