SwiftUI全屏视图fullScreenCover
SwiftUI全屏视图fullScreenCover

SwiftUI全屏视图fullScreenCover

在 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 的区别

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注