# Loaf **Repository Path**: deepwidth/Loaf ## Basic Information - **Project Name**: Loaf - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-26 - **Last Updated**: 2025-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

Loaf 🍞

Inspired by Android's Toast,
Loaf is a Swifty Framework for Easy iOS Toasts

Version Liscence Platform Swift4.2 Readme Score

____ ## Usage From any view controller, a Loaf can be presented by calling: ```swift Loaf("Message goes here", sender: self).show() ``` Which will result in: screen shot 2019-02-27 at 3 59 07 pm Bellow, I will discuss how to further customize your Loaf! ## Playground I've provided an example project to showcase uses of Loaf! Simply clone this repo, and open `LoafExamples.xcodeproj`. From here you can see and experiment custom Loaf styles in `Examples.swift` ## Customization ### Basic styles Loaf comes with 4 basic style out of the box. | Success | Error | | ------- | ----- | | screen shot 2019-02-27 at 3 45 44 pm | screen shot 2019-02-27 at 3 45 52 pm | | Warning | Info | | ------- | ---- | | screen shot 2019-02-27 at 3 45 58 pm | screen shot 2019-02-27 at 3 53 26 pm | These styles can be specified in the `style` property. For instance, to use `Success` styled Loaf, call it like so: ```swift Loaf("This is a success loaf", state: .success, sender: self).show() ``` ### Custom styles Loaf allows you to specify a custom style! This will let you set the colors, font, icon. and icon alignment. Here are some examples of custom Loaf styles! | Colors and icon | Right icon alignment | No icon | | ---- | ---- | ---- | | screen shot 2019-02-27 at 6 09 33 pm | screen shot 2019-02-27 at 6 13 13 pm | screen shot 2019-02-27 at 6 13 22 pm | All of these properties are specified as part of custom state, like so: ```swift Loaf("Switched to light mode", state: .custom(.init(backgroundColor: .black, icon: UIImage(named: "moon"))), sender: self).show() ``` ### Presenting and dismissing Loaf allows you to specify the presenting and dismissing direction. The presenting direction is independant from the dismissal direction. Here are some examples: | Vertical | Left | | ---- | ---- | | ![vertical](https://user-images.githubusercontent.com/22358682/53534239-f71a9f80-3acb-11e9-8010-c7915012a187.gif) | ![left](https://user-images.githubusercontent.com/22358682/53534240-f7b33600-3acb-11e9-8b10-b6d2cb3199a2.gif) | | Right | Mix | | ---- | ---- | | ![right](https://user-images.githubusercontent.com/22358682/53534241-f7b33600-3acb-11e9-8e55-457c5a2f32d2.gif) | ![mix](https://user-images.githubusercontent.com/22358682/53534242-f7b33600-3acb-11e9-9e74-88653d469746.gif) | These are specified in the function signature, like so: ```swift Loaf("Loaf message", presentingDirection: .left, dismissingDirection: .vertical, sender: self).show() ``` ### Location Toasts are typically presented at the bottom of the screen, but Loaf allows you to also present them at the top of the screen. Here is an example of a Loaf being presented at the top of the view: screen shot 2019-02-27 at 8 30 04 pm This is also specified in the function signature, like so: ```swift Loaf("Loaf message", location: .top, sender: self).show() ``` ### Other Specify the presentation duration. When presenting a Loaf with `.show()`, a presentation duration can be specified. The default value is 4s, but there are presets for 2s and 8s. This is done by using `.show(.short)` for 2s, or `.show(.long)` for 8s. A custom duration can also be specified with `.show(.custom(x))`, where x represents the duration in seconds. **⚠️ New in `0.5.0`:** - A completion handler can be specified in the Loaf `show()` function signature. This block will be called when the dismissal animation is completed, or when the Loaf is tapped. This completion handler is now passed with a enum representing whether the Loaf was tapped or timmed out. Here is an example of using a completion handler: ```swift Loaf(example.rawValue, sender: self).show { dismissalType in switch dismissalType { case .tapped: print("Tapped!") case .timedOut: print("Timmed out!") } } ``` - A Loaf's width can be specified via the `Style` component. The width can be specifed as a fixed size (i.e. 280px) or as a percentage of the screen's width. (i.e. `0.8` -> 80%). Here is some example usage: ```Swift Loaf(example.rawValue, state: .custom(.init(backgroundColor: .black, width: .screenPercentage(0.8))), sender: self).show() ``` - Loaf's will now be presented above tab bars, when possible. - Loaf's can be manually dismissed through a global method: ```swift Loaf.dismiss(sender: self) // Where `self` is the Loaf's presenter ``` ____ ## Installation ### Cocoapods Loaf is on Cocoapods! After [setting up Cocoapods in your project](https://guides.cocoapods.org/), simply add the folowing to your Podfile: ``` pod 'Loaf' ``` then run `pod install` from the directory containing the Podfile! Don't forget to include `import Loaf` in every file you'd like to use Loaf ### Requirements - Swift 4.2+ - iOS 9.0+ ### Contributing Pull requests, feature requests and bug reports are welcome 🚀 ____ Thanks to [@kirkbyo](https://github.com/kirkbyo) for helping me through the tough parts of this 💪

Made with ❤️ in 🇨🇦 by Mat Schmid