在 GeometryReader 中 ZStack 对齐不居中?

zum*_*zum 5 swiftui geometryreader zstack

我有以下观点:

struct TestView: View {
    
    var body: some View {
        GeometryReader { geo in
            ZStack(alignment: Alignment(horizontal: .center, vertical: .center)) {
                                
                    Text("TEST TEXT")
                
            }.background(Color.red)
        }
    }
    
}
Run Code Online (Sandbox Code Playgroud)

呈现这个:

在此输入图像描述

我希望 ZStack 中的视图居中,并且只有在删除 时才有效GeometryReader,如下所示:

struct TestView: View {
    
    var body: some View {
        ZStack(alignment: Alignment(horizontal: .center, vertical: .center)) {
            
            Text("TEST TEXT")
            
        }.background(Color.red)
    }
    
}
Run Code Online (Sandbox Code Playgroud)

呈现这个:

在此输入图像描述

如何使用GeometryReaderZStack 并仍然使内容居中,如上面最后一个渲染图片所示?为什么 GeometryReader 会扰乱 ZStack 内容对齐?

ahe*_*eze 12

GeometryReader 的对齐方式不断变化 - 请参阅GeometryReader 与先前操作系统版本的差异。为了获得正常的行为,我通常只添加.frame(maxWidth: .infinity, maxHeight: .infinity).

struct TestView: View {
    var body: some View {
        GeometryReader { geo in
            ZStack { /// no need for the custom Alignment
                Text("TEST TEXT")
            }
            .background(Color.red)
            .frame(maxWidth: .infinity, maxHeight: .infinity) /// here!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

文本居中