在 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、自定义关闭逻辑:
提供一个关闭按钮,用户可以手动关闭全屏视图。