av0c0der / toast-swift

A Swift Toast view - iOS 14 style and newer - built with UIKit. 🍞

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Toast-Swift

Codacy Badge

A Swift Toast view - iOS 14 style - built with UIKit. 🍞

Installation

Swift Package Manager

You can use The Swift Package Manager to install Toast-Swift by adding the description to your Package.swift file:

dependencies: [
    .package(url: "https://github.com/BastiaanJansen/toast-swift", from: "1.1.0")
]

CocoaPods

pod "ToastViewSwift"

Usage

To create a simple text based toast:

let toast = Toast.text("Safari pasted from Notes")
toast.show()

Or add a subtitle:

let toast = Toast.text("Safari pasted from Notes", subtitle: "A few seconds ago")
toast.show()

If you want to add an icon, use the default method to construct a toast:

let toast = Toast.default(
    image: UIImage(systemname: "airpodspro")!,
    title: "Airpods Pro",
    subtitle: "Connected"
)
toast.show()

Want to use a different layout, but still use the Apple style? Create your own view and inject it into the AppleToastView class when creating a custom toast:

let customView: UIView = // Custom view

let appleToastView = AppleToastView(child: customView)

let toast = Toast.custom(view: appleToastView)
toast.show()

The show method accepts several optional parameters. haptic of type UINotificationFeedbackGenerator.FeedbackType to use haptics and after of type TimeInterval to show the toast after a certain amount of time:

toast.show(haptic: .success, after: 1)

Configuration options

The text, default and custom methods support custom configuration options. The following options are available:

Name Description Type Default
autoHide When set to true, the toast will automatically close itself after display time has elapsed. Bool true
enablePanToClose When set to true, the toast will be able to close by swiping up. Bool true
displayTime The duration the toast will be displayed before it will close when autoHide set to true in seconds. TimeInterval 4
animationTime Duration of the show and close animation in seconds. TimeInterval 0.2
attachTo The view which the toast view will be attached to. UIView nil
let config = ToastConfiguration(
    autoHide: true,
    enablePanToClose: true,
    displayTime: 5,
    animationTime: 0.2
)

let toast = toast.text("Safari pasted from Notes", config: config)

Custom toast view

Don't like the default Apple'ish style? No problem, it is also possible to use a custom toast view with the custom method. Firstly, create a class that confirms to the ToastView protocol:

class CustomToastView : UIView, ToastView {
    private let text: String

    public init(text: String) {
        self.text = text
    }

    func createView(for toast: Toast) {
        // View is added to superview, create and style layout and add constraints
    }
}

Use your custom view with the custom construct method on Toast:

let customToastView: ToastView = CustomToastView(text: "Safari pasted from Notes")

let toast = Toast.custom(view: customToastView)
toast.show()

Licence

Toast-Swift is available under the MIT licence. See the LICENCE for more info.

Stargazers repo roster for @BastiaanJansen/Toast-Swift

About

A Swift Toast view - iOS 14 style and newer - built with UIKit. 🍞

License:MIT License


Languages

Language:Swift 70.5%Language:Ruby 29.5%