📦 PeekDialog

PeekDialog 是一个轻量级且可定制的 SwiftUI 组件,用于在您的 iOS 应用程序中显示临时的、非侵入式的对话框(或“Peek 对话框”)。它支持在指定的延迟后自动关闭,或通过拖动手势手动关闭。非常适合显示通知、警报或其他瞬态消息。

Screenshot 1

✨ 特性

🔧 安装

Swift Package Manager

您可以通过 Swift Package Manager 安装 PeekDialog。

通过 Packages.swift

将 PeekDialog 添加到您的 Package.swift

dependencies: [ 
	.package(url: "https://github.com/cembaykara/PeekDialog.git", from: "1.0.0")
]

🚀 使用

使用 isPresented

您可以像使用 .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。

Buy Me a Coffee at ko-fi.com

⚖️ 许可证

SwiftyEndpoint 在 Apache License 2.0 许可下发布。

有关完整详细信息,请参见 LICENSE 文件。