PopUp

SwiftUI 简易弹出视图实现

drawing

安装

可以使用 Swift Package Manager 安装 PopUp 库。

使用包 URL 搜索 PopUp 包:https://github.com/maxgribov/PopUp

有关如何集成包依赖项的信息,请参阅将包依赖项添加到您的 App 文档。

用法

显示

您可以使用 View 修饰符 popUp 轻松呈现弹出窗口。这与呈现 sheet 的方式非常相似

struct CustomAlertModel: Identifiable {
    var id: UUID = UUID()
    let title: String
    let message: String
}

struct ContentView: View {
    @State var customAlert: CustomAlertModel?
    var body: some View {
        
        Button("Show custom alert") {
            customAlert = CustomAlertModel(
                title: "Pop Up",
                message: "Some message here..."
            )
        }
        .popUp(item: $customAlert) { viewModel in
            CustomAlert(viewModel: viewModel)
        }
    }
}

struct CustomAlert: View {
    let viewModel: CustomAlertModel
    var body: some View {
        VStack {
            Text(viewModel.title)
                .font(.title)
            Text(viewModel.message)
        }
        .padding(40)
        .background(
            RoundedRectangle(cornerRadius: 30)
                .foregroundStyle(.white)
        )
    }
}

自定义

您可以使用一些方法来自定义弹出窗口的外观和行为

示例

struct ContentView: View {
    @State var customAlert: CustomAlertModel?
    var body: some View {
        
        Group {
            // ...
        }
        .popUp(item: $customAlert) { viewModel in
            CustomAlert(viewModel: viewModel)
        }
        .popUpBackgroundMaterial(.ultraThin)
    }
}

注意

PopUp 没有内容的任何背景或样式(例如系统警报视图)。 弹出窗口的外观必须由您自己实现。

这不是模态视图(例如 sheet)。 它不能覆盖它上面的视图。

可以一个接一个地打开许多弹出窗口。 没有像 sheet 这样的限制。

系统要求

Swift 5.9

许可证

此项目已获得 MIT 许可证的许可 - 有关详细信息,请参阅 LICENSE 文件