如何处理SwiftUI中的安全区域空间而忽略它

如何处理SwiftUI中的安全区域空间而忽略它,swiftui,safearealayoutguide,Swiftui,Safearealayoutguide,我想完全着色我的应用程序的背景,同时将内容定位在顶部,这样它就足够远离状态栏和那些拥有它的设备上的顶级 如果我这样做: @main struct SampleApp: App { var body: some Scene { WindowGroup { VStack { Text("Top of my view") Spacer() }

我想完全着色我的应用程序的背景,同时将内容定位在顶部,这样它就足够远离状态栏和那些拥有它的设备上的顶级

如果我这样做:

@main
struct SampleApp: App {
    var body: some Scene {
        WindowGroup {
            VStack {
                Text("Top of my view")
                Spacer()
            }
            .frame(maxWidth: .infinity, maxHeight: .infinity)
            .background(Color.yellow)
        }
    }
}
这将在内容顶部、安全区域下方显示文本。但只有内容区域是黄色的。安全区域是白色的

因此,我在
.background
修饰符下面添加了
.edgesIgnoringSafeAreas(.all)

现在,我的文本位于槽口下方(或在状态栏文本下方的屏幕顶部)且不可见

我不想随机猜测顶部填充物,因为这在有凹口的手机上可能没问题,但在没有通知的手机或iPad上看起来是错误的

如果我将我的
VStack
放在
GeometryReader
中,则当忽略顶部安全区域时,
读卡器.safeAreaInsets.top
为零(0)


我希望这是一个足够清楚的问题。有人遇到过这种情况并找到了解决方案吗?

您只需将
边缘识别安全区域
修改器应用于
Color.yellow

一种可能的解决方案是使用
ZStack

@main
struct SampleApp: App {
    var body: some Scene {
        WindowGroup {
            ZStack {
                Color.yellow
                    .edgesIgnoringSafeArea(.all)
                VStack {
                    Text("Top of my view")
                    Spacer()
                }
            }
        }
    }
}

解决此问题的一种方法是将
.edgesIgnoringSafeArea(.all)
仅应用于
.background()内部的
颜色.yellow


@vacawama
background
将限于
VStack
宽度,因此在这种情况下可能需要
frame
。我从没想过要这样做。谢谢。@P.Ent不客气:)如果您觉得我们的答案有助于解决您的问题,您可以接受其中一个答案,以便其他人知道您的问题已经解决。这也很有效。我也没想过要这样做。
@main
struct SampleApp: App {
    var body: some Scene {
        WindowGroup {
            VStack {
                Text("Top of my view")
                Spacer()
            }
            .frame(maxWidth: .infinity, maxHeight: .infinity)
            .background(Color.yellow.edgesIgnoringSafeArea(.all))
        }
    }
}