ios 如何使SwiftUI全屏查看?

eivgtgni  于 2022-12-01  发布在  iOS
关注(0)|答案(4)|浏览(263)

正如标题已经说,我试图使一个视图全屏(使其扩展到SafeArea),但SwiftUI似乎总是对齐视图的safeArea
在研究了一段时间后,我发现.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)
    }
}
nhhxz33t

nhhxz33t1#

只要将..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)

    }
}
jtw3ybtb

jtw3ybtb2#

根据苹果documentation从iOS 14你可以使用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()
                }
            
        }
    }
}
xam8gpfp

xam8gpfp3#

带有SwiftUI的增强现实应用在进入全屏时也有问题(Xcode 12. 3,SwiftUI 5. 3)

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

上面的代码来自AR模板,但是不起作用。
解决方案很棘手:你必须在“[你的目标] -〉常规-〉应用程序图标和启动图像”中将“启动屏幕.故事板”设置为“启动屏幕文件”。2如果项目中没有“启动屏幕.故事板”,在该字段中输入“启动屏幕”仍然可以工作。
我在苹果论坛上找到了一个similar discussion,它解释了失败的潜在原因:
如果设置不正确,那么听起来你的应用程序是启动到一个兼容模式,这是信箱你的应用程序。

pbossiut

pbossiut4#

ZStack {
                    Text("Test")
                    Rectangle()
                        .fill(.clear)
                        .background(Color.clear)
                        .edgesIgnoringSafeArea(.all)
                        .contentShape(Rectangle())
                        .onTapGesture {
                            //tap action
                        }
                }

相关问题