【问题标题】:Define width of views inside a stack view?在堆栈视图中定义视图的宽度?
【发布时间】:2018-04-11 00:51:20
【问题描述】:
我想在 stackviews 的帮助下创建一个类似设计的图形。我在 stackview 中水平添加了 5 个视图。现在我想做的是给一个视图一个高度为 25 的单个视图,并使堆栈视图的属性相等宽度,但不知何故我做不到。我必须在 stakview 的前导和尾随基础上计算视图的前导和尾随内部宽度。但是对于所有设备,前导和尾随将是静态的。我试图让堆栈视图水平和垂直居中,但这不起作用。
这是我的限制
为什么我必须给出前导和尾随来计算堆栈视图内的视图内部宽度。
为什么我不能将垂直和水平中心用于堆栈视图并让堆栈视图使用我为单个视图定义的宽度?
【问题讨论】:
标签:
ios
swift
autolayout
uistackview
【解决方案1】:
您需要解决视图的歧义,以便视图引擎可以准确地确定它需要如何绘制视图。引擎总是需要知道视图应该如何水平放置,因为在 iPad 的情况下,其他子视图必须展开太多;因此,如果我们指定前导和尾随,它可以根据需要扩展,或者如果我们希望它们的宽度增加不超过指定的范围,那么它可以在前导和尾随中留出一些空间并限制扩展。看你怎么需要了
我建议您将此图形视图的父级视图作为等宽和等高(或提供像 0.95 之类的乘数)作为超级视图的解决方案,以便它可以在所有屏幕尺寸上很好地显示。
花一些时间来解读歧义和冲突。这将帮助您获得所需的视图而无需过多思考
【解决方案2】:
设置stackview的前导、尾随和顶部约束 = 0
设置堆栈视图的高度限制
设置stackview分布属性=等间距
在 stackview 的第一个位置添加额外的视图,宽度约束 = 0
在 stackview 的最后一个位置添加额外的视图,宽度约束 = 0
将五个彩色视图宽度约束设置为宽度相等
将第一个彩色视图的宽度属性设置为与主视图相等的宽度;乘数 = 1:11