SimpleToast is a simple, lightweight, flexible and easy to use library to show toasts / popup notifications inside iOS or MacOS applications in SwiftUI. Because of the flexibility to show any content it is also possible to use the library for showing simple modals.
You decide the content, the library takes care about the rest.
⚠️ Note: The current version is still in development. There can and will be breaking changes in version updates until version 1.0.
Features:
Custom toast content support: You can show whatever you want inside the toast.
Custom positioning: Place the toast where you want it to be.
Timeout functionality: You decide if and when the toast should disappear.
Callback functionality: Run code when the toast disappeared.
Multiple, customizable animations
🚨 Breaking changes:
0.6.0:
The options struct is modified and the parameters showBackdrop and backdropColor are replaced by a single optional Color definition backdrop. See Options for more information
pod 'SwiftUI-SimpleToast', :git => 'https://github.com/sanzaru/SimpleToast.git'
and run
pod install
or
pod update
Usage:
There are different ways of attaching a toast notification to your view. The usage is very similar to well know SwiftUI view modifiers (e.g. alert or sheet). If you are familiar with these, using SimpleToast should be quiet easy.
Note: The toast always appears at the edges to the view it is attached to. Make sure the view has enough space to render the toast. Preferably the toast should be attached to the most outer view or the navigation view, if available.
Attach via boolean
You can attach the toast to a view and show it via binding to a boolean:
You can trigger the toast via an instance to an optional object, which conforms to the protocol Identifiable. If the value is not nil the toast will be shown.
The following example is based on the previous one and also shows the toast, but this time based on a value on an item.
To run custom code after the toast disappeared you just have to pass a function to the onDismiss parameter:
import SwiftUI
import SimpleToast
struct ToastTestView: View {
@State var showToast: Bool = false
private let toastOptions = SimpleToastOptions(
hideAfter: 5
)
VStack(spacing: 20) {
Button("Show toast") {
withAnimation {
showToast.toggle()
}
}
}
.simpleToast(isShowing: $showToast, options: toastOptions, onDismiss: onToastComplete) {
HStack {
Image(systemName: "exclamationmark.triangle")
Text("This is some simple toast message.")
}
.padding()
.background(Color.red.opacity(0.8))
.foregroundColor(Color.white)
.cornerRadius(10)
}
// This will be called on toast completion
func onToastComplete() -> Void {
print("The toast did disappear")
}
}
Usage with edgesIgnoringSafeArea(:edges:) / ignoresSafeArea(:edges:)
If the view you’re attaching the toast to is ignoring a safe area, make sure to apply the SimpleToast modifier after the modifier for ignoring the safe area:
SimpleToast for SwiftUI
SimpleToast is a simple, lightweight, flexible and easy to use library to show toasts / popup notifications inside iOS or MacOS applications in SwiftUI. Because of the flexibility to show any content it is also possible to use the library for showing simple modals.
You decide the content, the library takes care about the rest.
Features:
🚨 Breaking changes:
Demo
Installation
Swift Package Manager
Cocoapods
Add the following line to your Podfile:
and run
or
Usage:
There are different ways of attaching a toast notification to your view. The usage is very similar to well know SwiftUI view modifiers (e.g. alert or sheet). If you are familiar with these, using SimpleToast should be quiet easy.
Attach via boolean
You can attach the toast to a view and show it via binding to a boolean:
Attach via optional object
You can trigger the toast via an instance to an optional object, which conforms to the protocol Identifiable. If the value is not nil the toast will be shown.
The following example is based on the previous one and also shows the toast, but this time based on a value on an item.
Run code after dismissal
To run custom code after the toast disappeared you just have to pass a function to the
onDismiss
parameter:Usage with edgesIgnoringSafeArea(:edges:) / ignoresSafeArea(:edges:)
If the view you’re attaching the toast to is ignoring a safe area, make sure to apply the SimpleToast modifier after the modifier for ignoring the safe area:
Options
The toast can be configured via an optional SimpleToastOptions object. You can simply pass an empty object to configure the toast with default values.