在 SwiftUI 中,fullScreenCover 是一种呈现模式,用于在屏幕上显示一个全屏视图。与 sheet 类似,但 fullScreenCover 会覆盖整个屏幕,通常用于需要用户完成某种任务或进行关键交互的场景。

用法与Sheet类似,绑定一个变量,根据变量显示对应视图:
@State private var isFullScreenCoverPresented = false
Button("Show Full Screen Cover") {
    withAnimation {
        isFullScreenCoverPresented.toggle()
    }
}
.fullScreenCover(isPresented: $isFullScreenCoverPresented) {
    FullScreenView(isPresented: $isFullScreenCoverPresented)
}
当点击按钮时,弹出整个FullScreenView视图。
基本用法
以下是 fullScreenCover 的基本示例:
import SwiftUI
struct FullScreenCoverExample: View {
    @State private var isFullScreenCoverPresented = false
    var body: some View {
        Button("Show Full Screen Cover") {
            isFullScreenCoverPresented.toggle()
        }
        .fullScreenCover(isPresented: $isFullScreenCoverPresented) {
            FullScreenView(isPresented: $isFullScreenCoverPresented)
        }
    }
}
struct FullScreenView: View {
    @Binding var isPresented: Bool
    var body: some View {
        VStack {
            Text("This is a full-screen cover!")
                .font(.title)
                .padding()
            Button("Dismiss") {
                isPresented = false
            }
            .padding()
            .background(Color.blue)
            .foregroundColor(.white)
            .cornerRadius(8)
        }
        .frame(maxWidth: .infinity, maxHeight: .infinity)
        .background(Color.gray.opacity(0.2))
        .ignoresSafeArea()
    }
}
#Preview {
    FullScreenCoverExample()
}
关键点解析
1、isPresented 的使用:
fullScreenCover 使用一个布尔状态来控制是否显示。
在全屏视图中,使用 @Binding 接收 isPresented,以便在内部控制其状态。
2、视图布局:
FullScreenView 中使用 .ignoresSafeArea() 来确保背景和内容能够覆盖整个屏幕。
3、自定义关闭逻辑:
提供一个关闭按钮,用户可以手动关闭全屏视图。

与 sheet 的区别

				    