NotificationBanner alternatives and similar libraries
Based on the "Alerts" category.
Alternatively, view NotificationBanner alternatives based on common mentions on social networks and blogs.
-
SwiftMessages
A very flexible message bar for iOS written in Swift. -
SCLAlertView-Swift
Beautiful animated Alert View. Written in Swift -
TSMessages
π Easy to use and customizable messages/notifications for iOS Γ la Tweetbot -
JDStatusBarNotification
Highly customizable & feature rich notifications displayed below the status bar. iOS 13+. Swift ready! -
CRToast
A modern iOS toast view that can fit your notification needs -
Toast-Swift
A Swift extension that adds toast notifications to the UIView object class. -
Whisper
:mega: Whisper is a component that will make the task of display messages and in-app notifications simple. It has three different views inside -
PMAlertController
PMAlertController is a great and customizable alert that can substitute UIAlertController -
SweetAlert
Live animated Alert View for iOS written in Swift -
Jelly
π - Jelly is a library for animated, non-interactive & interactive viewcontroller transitions and presentations with the focus on a simple and yet flexible API. -
RKDropdownAlert
iOS / Objective C: an extremely simple UIAlertView alternative -
RMDateSelectionViewController
This is an iOS control for selecting a date using UIDatePicker in an UIAlertController like manner -
CDAlertView
Highly customizable alertview and alert/notification/success/error/alarm popup written in Swift -
BRYXBanner
A lightweight dropdown notification for iOS 7+, in Swift. -
CFAlertViewController
It is a highly configurable iOS library which allows easy styling with built in styles as well as extra header and footer views so that you can make extremely unique alerts and action sheets. -
SwiftNotice
GUI library for displaying various popups (HUD), written in pure Swift. -
FCAlertView
FCAlertView is a Flat Customizable AlertView for iOS (Written in Objective C) -
NZAlertView
Simple and intuitive alert view. Similar to push notification effect. -
SwiftyDrop
Lightweight dropdown message bar in Swift. It's simple and beautiful. -
Swift-Prompts
A Swift library to design custom prompts with a great scope of options to choose from. -
TTGSnackbar
TTGSnackbar shows simple message and action button on the bottom or top of the screen with multi kinds of animation, which is written in Swift3 and inspired by Snackbar in Android. It also support showing custom view, icon image or multi action button. -
GSMessages
A simple style messages/notifications, in Swift. -
NYAlertViewController
Highly configurable iOS Alert Views with custom content views -
SwiftOverlays
SwiftOverlays is a Swift GUI library for displaying various popups and notifications -
CZPicker
a picker view shown as a popup for iOS in Objective-C -
RMActionController
This is an iOS control for presenting any UIView in an UIAlertController like manner -
DOAlertController
Simple Alert View written in Swift, which can be used as a UIAlertController. (AlertController/AlertView/ActionSheet) -
SimpleAlert
Customizable simple Alert and simple ActionSheet for Swift -
RMPickerViewController
This is an iOS control for selecting something using UIPickerView in an UIAlertController like manner -
HDNotificationView
Emulates the native Remote Notification View. -
NoticeBar
πA simple NoticeBar written by Swift 3, similar with QQ notice view. -
LNRSimpleNotifications
Simple Swift in-app notifications -
CustomizableActionSheet
Action sheet allows including your custom views and buttons. -
LKAlertController
An easy to use UIAlertController builder for swift -
BPStatusBarAlert
BPStatusBarAlert is a library that allows you to easily make text-based alert that appear on the status bar and below navigation bar. -
MaterialActionSheetController
A Google like action sheet for iOS written in Swift. -
RAlertView
AlertView, Ios popup window, A pop-up framework, Can be simple and convenient to join your project. IOS ζη€Ίζ‘οΌIOSεΌΉζ‘οΌIOSεΌΉηͺ -
Notie
In-app notification in Swift, with customizable buttons and input text field. -
SnowGlobeFramework
Snow globe framework is delightful / slightly cheese easter egg for christmas season. Turns your awesome app into a snow globe, when user shake the device. -
KRAlertController
A colored alert view for your iOS. -
AlertViewLoveNotification
A simple and attractive AlertView to ask permission to your users for Push Notification.
Appwrite - The open-source backend cloud platform
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of NotificationBanner or a related project?
README
[Notification Banner](NotificationBanner/Assets/header.png)
Written in Swift 5
NotificationBanner is an extremely customizable and lightweight library that makes the task of displaying in app notification banners and drop down alerts an absolute breeze in iOS.
Basic Banners | Banners with Side Views | Status Bar Banners |
---|---|---|
[Basic Banners](NotificationBanner/Assets/basic.gif) | [Banners with Side Views](NotificationBanner/Assets/side_views.gif) | [Status Bar Banners](NotificationBanner/Assets/status_bar.gif) |
Growing Banners | Floating Banners | Stacked Banners |
---|---|---|
[Growing Banners](NotificationBanner/Assets/growing.gif) | [Floating Banners](NotificationBanner/Assets/floating.gif) | [Floating Banners](NotificationBanner/Assets/stacked.gif) |
Features
- Highly customizable β
NSAttributedString
support β- iPhone, iPhoneX, & iPad Support β
- Orientation change support β
- Custom
UIView
support β - Custom colors support β
- Support for long titles/ subtitles β
NotificationBanner
uses horizontal scrolling labelsGrowingNotificationBanner
grows in height as needed
- Presenting from top or bottom support β
- Haptic feeback support β
- Built in banner queue β
- Allow to display several banners simultaneously, configurable in banners queue β
- Accessibility support β
Requirements
- iOS 10.0+
- Xcode 10.0+
Installation
CocoaPods
NotificationBanner is available through CocoaPods. To install it, simply add the following line to your Podfile:
Swift 5 + Xcode 11 + iOS 13 Support
pod 'NotificationBannerSwift', '~> 3.0.0'
Swift 5 + Xcode 10.x
pod 'NotificationBannerSwift', '2.5.0'
Swift 4.2
pod 'NotificationBannerSwift', '2.0.1'
Swift 4.0
pod 'NotificationBannerSwift', '1.6.3'
pod 'MarqueeLabel/Swift', '3.1.6'
Then add import NotificationBannerSwift
at the top of each file you use NotificationBanner in your project.
Carthage
To use NotificationBanner via Carthage simply add this line to your Cartfile
:
Swift 5
github "Daltron/NotificationBanner" "master"
Then add NotificationBanner.framework
and the dependencies SnapKit.framework
and MarqueeLabel.framework
in your project.
Swift Package Manager
You can also add this library as swift package manager.
- Go to File > Add Packages
- The Add Package dialog appears, by default with Apple packages.
- In the upper right hand corner, paste https://github.com/Daltron/NotificationBanner into the search bar
- Hit Return to kick off the search
- Click Add Package.
Usage
Creating drop down alerts with NotificationBanner is easy. To create a regular banner (with scrolling labels) and show it, simply:
let banner = NotificationBanner(title: title, subtitle: subtitle, style: .success)
banner.show()
If you want to create a banner which grows in height as needed and show it accordingly just use GrowingNotificationBanner
instead of NotificationBanner
:
let banner = GrowingNotificationBanner(title: title, subtitle: subtitle, style: .success)
banner.show()
To create a status bar alert, simply:
let banner = StatusBarNotificationBanner(title: title, style: .success)
banner.show()
By default, each banner will be displayed on the main application window. If you are wanting to show a banner below a navigation bar, simply show on the view controller that is within the navigation system:
banner.show(on: viewController)
By default, each banner will present from the top. If you are wanting to display from the bottom, simply:
banner.show(bannerPosition: .bottom)
Each of the show properties defined above can be mixed and matched to work flawlessly with eachother.
By default, each banner will automatically dismiss after 5 seconds. To dismiss programatically, simply:
banner.dismiss()
To show a banner infinitely until it is manually dismissed, simply:
banner.autoDismiss = false
NotificationBanner has five prebuilt styles that you can choose from:
public enum BannerStyle {
case danger
case info
case customView
case success
case warning
}
You can override the predefined colors that NotificationBanner uses for any style by conforming to the BannerColorsProtocol
:
public protocol BannerColorsProtocol {
func color(for style: BannerStyle) -> UIColor
}
Its as easy as creating a custom banner colors class:
class CustomBannerColors: BannerColorsProtocol {
internal func color(for style: BannerStyle) -> UIColor {
switch style {
case .danger: // Your custom .danger color
case .info: // Your custom .info color
case .customView: // Your custom .customView color
case .success: // Your custom .success color
case .warning: // Your custom .warning color
}
}
}
And then passing in that class to any notification banner you create:
let banner = NotificationBanner(title: title, style: .success, colors: CustomBannerColors())
banner.show()
By default, the .info
style will be applied to the banner if no style is provided in the init method. You can set the background color of a banner at any time by simply setting the backgroundColor
.
Banners with Side Views
A notification banner can have a left accessory view, a right accessory view, or both:
// Success Style Notification with Left View
let leftView = UIImageView(image: #imageLiteral(resourceName: "success"))
let banner = NotificationBanner(title: title, subtitle: subtitle, leftView: leftView, style: .success)
banner.show()
// Danger Style Notification with Right View
let rightView = UIImageView(image: #imageLiteral(resourceName: "danger"))
let banner = NotificationBanner(title: title, subtitle: subtitle, rightView: rightView, style: .danger)
banner.show()
// Info Style Notification with Left and Right Views
let leftView = UIImageView(image: #imageLiteral(resourceName: "info"))
let rightView = UIImageView(image: #imageLiteral(resourceName: "right_chevron"))
let banner = NotificationBanner(title: title, subtitle: subtitle, leftView: leftView, rightView: rightView, style: .info)
banner.show()
[Banners with Side Views](NotificationBanner/Assets/side_views.gif)
Each side view will be automically reisized to fit perfectly
Banners with a Custom View
A notification banner can also be initalized with a custom view:
let banner = NotificationBanner(customView: NorthCarolinaBannerView())
banner.show()
[Custom Banner](NotificationBanner/Assets/custom.gif)
Handling User Interaction
By default, when a banner is tapped or swiped up by a user, it will be dismissed. If you want to detect when the user taps or swipes up on a banner, simply:
banner.onTap = {
// Do something regarding the banner
}
banner.onSwipeUp = {
// Do something regarding the banner
}
Banner Events
You can choose to opt into a notification banner's events by registering as its delegate:
banner.delegate = self
Then just make sure to implement the following methods:
func notificationBannerWillAppear(_ banner: BaseNotificationBanner)
func notificationBannerDidAppear(_ banner: BaseNotificationBanner)
func notificationBannerWillDisappear(_ banner: BaseNotificationBanner)
func notificationBannerDidDisappear(_ banner: BaseNotificationBanner)
Haptic Feedback Support
By default, when a banner is displayed, a haptic feedback will be generated on devices that support it. The types of haptic feedback are as follows:
public enum BannerHaptic {
case light
case medium
case heavy
case none
}
To change the type of haptic feedback to generate when a banner is shown, simply:
banner.haptic = .heavy
Banner Queue
By default, each notification banner is placed onto a singleton of an auto-managed NotificationBannerQueue
. This allows an infinite amount of banners to be displayed without one hiding the other. If you have multiple controllers within your navigation stack that need to be managed by a seperate queue (like a tab bar controller), simply create an instance of a NotificationBannerQueue
and pass it in to the show function:
banner.show(queue: customQueue)
By default, each notification banner is placed on the back of the queue. If you would rather place the banner in the front and show it immediately no matter how many banners are in the queue, simply state it in the show()
method:
banner.show(queuePosition: .front)
Adding a banner to the front of the queue will temporarily suspend the currently displayed banner (if there is one) and will resume it after the banner in front of it dismisses.
To get the number of banners currently on the queue, simply:
let numberOfBanners = NotificationBannerQueue.default.numberOfBanners
This is all automatically managed!
Banner Queue and display banners simultaneously (stacked)
You can also create the queue to display several banners at once with controlling of maximum number of banners to be displayed simultaneously. You can "show" more banners than allowed by queue settings - banners what exceed this value will be displayed some time later, after some banners already displayed on screen will be closed. In example below we create queue with maximum simultaneous banners allowed - 3:
let bannerQueueToDisplaySeveralBanners = NotificationBannerQueue(maxBannersOnScreenSimultaneously: 3)
Create five different banners:
let banner1 = FloatingNotificationBanner(
title: "Success Notification - 1",
subtitle: "First Notification from 5 in current queue with 3 banners allowed simultaneously",
style: .success
)
banner1.delegate = self
let banner2 = FloatingNotificationBanner(
title: "Danger Notification - 2",
subtitle: "Second Notification from 5 in current queue with 3 banners allowed simultaneously",
style: .danger
)
banner2.delegate = self
let banner3 = FloatingNotificationBanner(
title: "Info Notification - 3",
subtitle: "Third Notification from 5 in current queue with 3 banners allowed simultaneously",
style: .info
)
banner3.delegate = self
let banner4 = FloatingNotificationBanner(
title: "Success Notification - 4",
subtitle: "Fourth Notification from 5 in current queue with 3 banners allowed simultaneously",
style: .success
)
banner4.delegate = self
let banner5 = FloatingNotificationBanner(
title: "Info Notification - 5",
subtitle: "Fifth Notification from 5 in current queue with 3 banners allowed simultaneously",
style: .info
)
banner5.delegate = self
and show all five banners at once:
showBanners(
[banner1, banner2, banner3, banner4, banner5],
in: bannerQueue5AllowedMixed
)
using this supporting method
func showBanners(
_ banners: [FloatingNotificationBanner],
in notificationBannerQueue: NotificationBannerQueue
) {
banners.forEach { banner in
banner.show(
bannerPosition: selectedBannerPosition(),
queue: notificationBannerQueue,
cornerRadius: 8,
shadowColor: UIColor(red: 0.431, green: 0.459, blue: 0.494, alpha: 1),
shadowBlurRadius: 16,
shadowEdgeInsets: UIEdgeInsets(top: 8, left: 8, bottom: 0, right: 8)
)
}
}
It will display first three banners at once, and after some time (or by user tap) it will be hidden and 4 and 5 banner will be displayed when. All it with fancy animation.
Feature Requests
I'd love to know anything that you think NotificationBanner is missing. Open an issue and I'll add the feature request
label to it and I'll do everything I can to accomodate that request if it is in the library's best interest. π
Apps that Use NotificationBanner
[Q - Talk About Music](AppIcons/q_talk_about_music.jpg) [VH Dispatch](AppIcons/vh_dispatch.png) [Stikkr](AppIcons/stikkr.png) [CardCast](AppIcons/cardcast.png) [Happy Scale](AppIcons/happy_scale.png) [Wanderings](AppIcons/wanderings.png) [Modern Magic 8 Ball](AppIcons/modernmagic8ball.png) [Envision: Habits Tracker](AppIcons/envision.png) [TSUM](AppIcons/tsum.png) [RIS](AppIcons/ris.png) [LukaPizza](AppIcons/lukapizza.png)
Feel free to add yours!
Author
Dalton Hinterscher, [email protected]
License
NotificationBanner is available under the MIT license. See the LICENSE file for more info.
*Note that all licence references and agreements mentioned in the NotificationBanner README section above
are relevant to that project's source code only.