在此示例中,“ hello”文本按预期放置在屏幕中间。
struct ContentView: View {
var body: some View {
GeometryReader { geo in
Text("hello")
.background(Color.green)
}
.background(Color.blue)
}
}
但是当我将Text
移至提取视图时,“ hello”文本将移至屏幕的左上角。
struct ContentView: View {
var body: some View {
GeometryReader { geo in
ExtractedView()
}
.background(Color.blue)
}
}
struct ExtractedView: View {
var body: some View {
Text("hello")
.background(Color.green)
}
}
这是错误,还是我不理解的预期行为?
答案 0 :(得分:1)
确认Xcode 12 / iOS 14的左上角位置。我认为这不是错误。实际上,GeometryReader
不是容器,没有(不应)具有自己的默认对齐方式,即它的用途是自定义对齐方式,所以我们在这里。
可能的解决方案(已通过Xcode 12b3 / iOS 14测试):
GeometryReader { geo in
ExtractedView()
.position(x: geo.size.width / 2, y: geo.size.height / 2)
}
GeometryReader { geo in
VStack {
ExtractedView()
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
}