SwiftUI 库,用于简单弹出视图的实现
弹出
SwiftUI 简单弹出视图实现:
安装
可以使用 Swift 包管理器来安装 PopUp 库。
使用软件包 URL 来搜索 PopUp 软件包:https://github.com/maxgribov/PopUp
有关如何集成软件包依赖项,请参阅将软件包依赖项添加到您的应用程序文档。
用法
显示
您可以使用View
修饰符 popUp 轻松显示弹出窗口。这与显示工作表非常相似:
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)
)
}
}
自定义
您可以使用一些方法来自定义弹出窗口的外观和行为:
- popUpBackgroundMaterial:更新弹出窗口视图下方的暗视图的材质。
- popUpPresentAnimation:替换弹出窗口显示时的动画。
- popUpDismissAnimation:替换弹出窗口取消时的动画。
- popUpDismissOnBackgroundTap:启用或禁用用户在弹出窗口视图之外的暗视图上点击时弹出窗口取消。
示例:
struct ContentView: View {
@State var customAlert: CustomAlertModel?
var body: some View {
Group {
// ...
}
.popUp(item: $customAlert) { viewModel in
CustomAlert(viewModel: viewModel)
}
.popUpBackgroundMaterial(.ultraThin)
}
}
注释
例如,PopUp 没有任何背景或内容样式(比如系统警报视图)。您必须自己实现弹出窗口的外观。
这不是模式视图(例如工作表)。它无法覆盖其上方的视图。
可以打开多个弹出窗口,一个在另一个之上。没有像工作表那样的限制。
系统要求
Swift 5.9
- iOS 15+
- macOS 12+
许可
此项目采用 MIT 许可证授权