gpt4 book ai didi

ios - 将 UIStackView 的 .fill 与 SwiftUI VStack 对齐

转载 作者:行者123 更新时间:2023-12-04 01:03:30 25 4
gpt4 key购买 nike

我有一个 VStack,里面有 3 个 Text。每个都有不同长度的字符串。我希望 VStack 的宽度刚好足以容纳最宽的 Text,但我也希望所有三个 Text s 水平填充 VStack。

默认情况下,使用此代码:

VStack(spacing: 4.0) {
ForEach(1..<4) {
Text(Array<String>(repeating: "word", count: $0).joined(separator: " "))
.background(Color.gray)
}
}

我得到:

VStack with three different width Texts

我要:

VStack with three same width Texts

在 UIKit 中,我可以用一个垂直的 UIStackView 来做到这一点,它的 alignment 属性被设置为 .fillVStack 没有 .fill 对齐方式。我看到的建议解决方案是修改堆栈 View 的每个子项的框架(即每个 Text)与 .infinity for maxWidth.

我发现的建议是用 .frame(maxWidth: .infinity) 修改 Text。然而,这使得整个 VStack 扩展到(大概)它的最大尺寸:

Wide VStack

有没有办法让 VStack 自然地增长到它最宽的 child 的大小,而不是更大,同时让它的所有 child 都具有相同的宽度?

最佳答案

只需添加 .fixedSize()

struct ContentView: View {
var body: some View {

VStack(spacing: 4.0) {
ForEach(1..<4) {
Text(Array<String>(repeating: "word", count: $0).joined(separator: " "))
.frame(maxWidth: .infinity) /// keep the maxWidth
.background(Color.gray)
}
}
.fixedSize() /// here!
}
}

结果:

3 Texts with gray background stacked vertically, all 3 gray backgrounds have the largest Text's width

关于ios - 将 UIStackView 的 .fill 与 SwiftUI VStack 对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67290686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com