为什么 SwiftUI 没有在这个全屏封面上隐藏我的状态栏?

Why is SwiftUI not hiding my status bar on this fullScreenCover?

我的代码如下。 .statusBar(hidden: true) 应该在不同的地方吗?它是否取决于某些我不知道的 @Environment

import SwiftUI

struct ContentView: View {
    
    @State private var isShowingFullScreenModal = false
    
    var body: some View {
        Text("Show Modal")
            .font(.title)
            .foregroundColor(.white)
            .frame(width: 180, height: 44)
            .padding()
            .background(Color.blue)
            .cornerRadius(12)
            .onTapGesture {
                isShowingFullScreenModal = true
            }
            .fullScreenCover(isPresented: $isShowingFullScreenModal) {
                Color.green
                    .ignoresSafeArea(.all)
                    .onTapGesture {
                        isShowingFullScreenModal = false
                    }
            }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}


struct GreenCover: View {
    
    @Environment(\.presentationMode) var presentationMode
    
    var body: some View {
        
        ZStack {
            Color.green
                .ignoresSafeArea(.all)
            VStack{
                HStack{
                    Spacer()
                    Image(systemName: "xmark.circle.fill")
                }
                Spacer()
            }
        }
        .statusBar(hidden: true)
    }
    
}

这里是固定变体。使用 Xcode 12.1 / iOS 14.1

测试
.onTapGesture {
    isShowingFullScreenModal = true
}
.statusBar(hidden: isShowingFullScreenModal)                // << here !!
.fullScreenCover(isPresented: $isShowingFullScreenModal) {

有时候在我们的应用中,我们需要隐藏状态栏、导航栏等东西,只显示我们想显示的内容。要使用 swift 语言在我们的 iOS 应用程序中隐藏状态栏,我们需要完成非常基本的步骤。

方法一

在您的 info.plist 文件本身中,添加另一个名为 Status bar is initially hidden 的键并将其设置为 YES。

我注意到使用此方法时,状态栏仅在应用程序启动时隐藏。

方法二

转到您的应用委托文件,并添加这行代码:UIApplication.shared.isStatusBarHidden = true

这已在 iOS 13 上弃用。

方法三

你也可以加上这行代码,状态栏会隐藏起来

.edgesIgnoringSafeArea(.all)
.statusBar(hidden: true)