PeekDialog 是一个轻量级且可定制的 SwiftUI 组件,用于在您的 iOS 应用程序中显示临时的、非侵入式的对话框(或“Peek 对话框”)。它支持在指定的延迟后自动关闭,或通过拖动手势手动关闭。非常适合显示通知、警报或其他瞬态消息。
您可以通过 Swift Package Manager 安装 PeekDialog。
https://github.com/cembaykara/PeekDialog.git
将 PeekDialog 添加到您的 Package.swift
dependencies: [
.package(url: "https://github.com/cembaykara/PeekDialog.git", from: "1.0.0")
]
您可以像使用 .sheet(isPresented: )
一样显示对话框。
import SwiftUI
import PeekDialog
struct ContentView: View {
@State private var showDialog = false
var body: some View {
VStack {
Button("Show Peek Dialog") {
showDialog = true
}
}
.peekDialog(isPresented: $showDialog) {
Text("This is a peek dialog!")
.padding()
.background(Color.white)
.cornerRadius(8)
.shadow(radius: 10)
}
}
}
您还可以将对话框绑定到一个可选项目。当项目为非 nil 时,对话框将自动显示,并在其变为 nil 时关闭。
struct ContentView: View {
@State private var myString: String? = nil
var body: some View {
VStack {
Button("Show Dialog with Item") {
activeItem = "Example Item"
}
}
.peekDialog(with: $myString, dismissDelay: .long) { item in
Text("Dialog for item: \(item)")
.padding()
.background(Color.white)
.cornerRadius(8)
.shadow(radius: 10)
}
}
}
您可以使用 PeekDialogDelay.custom(seconds: Double)
来定义持续时间。
.peekDialog(with: $myItem, dismissDelay: .custom(seconds: 1.25)) { item in
/* ... */
}
欢迎贡献!如果您发现错误或有功能请求,请提交 issue。如果您想贡献代码,请 fork 该存储库并提交 pull request。
SwiftyEndpoint 在 Apache License 2.0 许可下发布。
有关完整详细信息,请参见 LICENSE 文件。