SwiftUI 简易弹出视图实现
可以使用 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 文件