【发布时间】:2021-07-21 05:55:06
【问题描述】:
我有一个 VStack,其中包含 3 个 Texts。每个都有不同长度的字符串。我希望VStack 的宽度刚好足以容纳最宽的Text,但我还希望所有三个Texts 都水平填充VStack。
默认情况下,使用以下代码:
VStack(spacing: 4.0) {
ForEach(1..<4) {
Text(Array<String>(repeating: "word", count: $0).joined(separator: " "))
.background(Color.gray)
}
}
我明白了:
我想要:
在 UIKit 中,我可以使用垂直的 UIStackView 来做到这一点,其 alignment 属性设置为 .fill。 VStack 没有 .fill 对齐。我看到的建议解决方案是使用.infinity 为maxWidth 修改堆栈视图的每个子项(即每个Text)的框架。
我发现的建议是将Texts 修改为.frame(maxWidth: .infinity)。但是,这会使整个 VStack 扩展到(可能)它的最大尺寸:
有没有办法让VStack 自然增长到它最宽的孩子的大小,而不是更大,同时让它的所有孩子都保持相同的宽度?
【问题讨论】: