如何在 SwiftUI 中正确对齐 GeometryReader
How to align properly with GeometryReader in SwiftUI
所以我正在制作一个应用程序,但我遇到了 GeometryReader 的问题。我创建了一个测试文件,无法弄清楚我做错了什么。我正在尝试将所有文本视图与前导对齐。然而,他们中只有两个人真正动了。我在 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。
所以我正在制作一个应用程序,但我遇到了 GeometryReader 的问题。我创建了一个测试文件,无法弄清楚我做错了什么。我正在尝试将所有文本视图与前导对齐。然而,他们中只有两个人真正动了。我在 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。