如何使SwiftUI全屏显示?

时间:2019-06-24 09:30:28

标签: ios swift swiftui

正如标题中已经说过的那样,我正在尝试使全屏视图(使其延伸到SafeArea上),但是SwiftUI似乎总是使视图与safeArea对齐。 / p>

研究了一段时间之后,我发现.edgesIgnoringSafeArea(.all)似乎是一种非常简单的方法。问题是它不起作用。视图仍然不是全屏。这是一些示例代码:

struct ContentView : View {
    var body: some View {
        Text("Test")
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
            .edgesIgnoringSafeArea(.all)
            .background(Color.red)
    }
}

3 个答案:

答案 0 :(得分:3)

只需交换..background(Color.red)和.edgesIgnoringSafeArea(.all)。而且它将完美地工作。

struct ContentView : View {

    var body: some View {
        Text("Test")
            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
            .background(Color.red)
            .edgesIgnoringSafeArea(.all)

    }
}

答案 1 :(得分:3)

带有 SwiftUI 的增强现实应用程序也有进入全屏的问题。 (Xcode 12.3,SwiftUI 5.3)

struct ContentView : View {
    var body: some View {
        return ARViewContainer().edgesIgnoringSafeArea(.all)
    }
}

以上代码来自 AR 模板。但是,它不起作用。

解决方案很棘手:您必须在“[yourTarget] -> General -> App Icons and Launch Images”中将“LaunchScreen.storyboard”设置为“Launch Screen File”。如果项目中没有“LaunchScreen.storyboard”,它仍然可以通过在该字段中输入“LaunchScreen”来工作。

我在 Apple 论坛上发现了一个 similar discussion 解释了失败的潜在原因:

<块引用>

如果设置不正确,那么听起来您的应用程序正在启动到兼容模式,该模式将您的应用程序装箱。

答案 2 :(得分:1)

根据iOS 14上的Apple documentation,您可以使用fullScreenCover(item:onDismiss:content:)

这是示例代码:

struct ContentView: View {
    @State private var isFullScreen = false
    var body: some View {
        ZStack{
        Color.yellow.edgesIgnoringSafeArea(.all)
        Text("Hello, FullScreen!")
            .padding()
            .background(Color.blue)
            .foregroundColor(.green)
            .cornerRadius(8)
            .fullScreenCover(isPresented: $isFullScreen) {
                FullScreen(isFullScreen: $isFullScreen)
            }
            .onTapGesture {
                isFullScreen.toggle()
            }
    }
    }
}

struct FullScreen: View {
    @Binding var isFullScreen: Bool
    
    var body: some View {
        ZStack {
            Color.red.edgesIgnoringSafeArea(.all)
            Text("This is full screen!!")
                .onTapGesture {
                    self.isFullScreen.toggle()
                }
            
        }
    }
}