Toaster 是一个轻量级的 SwiftUI 库,用于在你的 iOS 应用中呈现 Toast 消息。它提供了一种简单且可定制的方式向用户显示临时通知。
要在你的 SwiftUI 项目中使用 Toaster,只需将 Toaster 包作为依赖项添加到你的 Package.swift
文件中即可。
dependencies: [
.package(url: "https://github.com/DarthRumata/Toaster.git", from: "0.4.0")
]
要呈现 Toast 消息,你可以在你的 SwiftUI 视图上使用 toastView
修饰符。 Toaster 提供了 toastView
修饰符的多种变体,具体取决于你的用例。
你可以使用 toastView(toast:)
修饰符显示预定义的 Toast。 它接受一个绑定到 Toast 对象的绑定作为输入。
struct ContentView: View {
@State var error: Error?
var body: some View {
let errorBinding = Binding<Toast?>(get: {
if error != nil {
return Toast(message: "An error occurred", style: .error)
}
return nil
}, set: { newValue in
if newValue == nil {
error = nil
}
})
VStack {
// Your view content
Button("Show Error Toast") {
error = MyCustomError()
}
}
.toastView(toast: errorBinding)
}
}
如果想要呈现自定义的 Toast 视图,可以使用 toastView(isPresented:view:)
修饰符。 它接受一个绑定到布尔值的绑定,该布尔值指示 Toast 呈现状态,以及一个返回自定义 Toast 视图的闭包。
struct ContentView: View {
@State var isToastPresented = false
var body: some View {
VStack {
// Your view content
Button("Show Custom Toast") {
isToastPresented = true
}
}
.toastView(isPresented: $isToastPresented) {
CustomToastView()
}
}
}
要手动控制 Toast 消息的呈现,可以使用 ToastScheduler 类。 你可以创建一个调度器实例,并将其传递给 toastView(scheduler:)
修饰符。
class ViewModel: ObservableObject {
private(set) var toastScheduler = ToastScheduler()
}
struct ContentView: View {
@StateObject var viewModel = ViewModel()
var body: some View {
VStack {
// Your view content
Button("Schedule Toast") {
viewModel.toastScheduler.present(CustomToastView(), dismissDelay: 3)
}
}
.toastView(scheduler: viewModel.toastScheduler)
}
}