所以我正在制作一个应用程序,但我在使用 GeometryReader 时遇到了问题。我创建了一个测试文件,但无法弄清楚我做错了什么。我正在尝试将所有文本 View 与前导对齐。然而,他们中只有两个人真正移动。我在 VStack 中嵌入了一个 VStack,我认为这就是问题所在。
struct TestFile: View {
var body: some View {
HStack {
Text("Hello")
GeometryReader { geo in
VStack(alignment: .leading) {
Text("Test 1")
Text("Test 2")
VStack {
Text("Test 3")
Text("Test 4")
}
.frame(width: geo.size.width)
}
.background(.orange)
}
.background(.purple)
}
.background(.green)
}
}
struct TestFile_Previews: PreviewProvider {
static var previews: some View {
TestFile()
}
}
这就是发生的事情
如何才能使测试 3 和测试 4 与测试 1 和测试 2 保持相同的对齐方式?我尝试过在两个 VStack 上进行对齐,但不幸的是,这没有任何作用。
最佳答案
您不需要使用GeometryReader
,但可以使用对齐方式,例如
VStack {
Text("Test 3")
Text("Test 4")
}
.frame(maxWidth: .infinity, alignment: .leading) // << here !!
并摆脱未使用的 GR。
关于ios - 如何在 SwiftUI 中与 GeometryReader 正确对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72115779/