SDCAlertView started out as an alert that looked identical to UIAlertView, but had support for a custom content view. With the introduction of UIAlertController in iOS 8, the project was updated to the more modern API that UIAlertController brought.
UIAlertController functionalityTo install SDCAlertView using CocoaPods, integrate it in your existing Podfile, or create a new Podfile:
platform :ios, '9.0'
use_frameworks!
target 'MyApp' do
pod 'SDCAlertView'
end
Then run pod install.
To install with Carthage, add the following line to your Cartfile:
github "sberrevoets/SDCAlertView"
Run carthage update and drag SDCAlertView.framework in the Build folder into your project.
To install with Swift Package Manager, add this package to your project’s ‘Swift Packages’ section. Or add the following line to your Package.swift:
.package(url: "https://github.com/sberrevoets/SDCAlertView.git", from: "12.0.5")
SDCAlertController supports the presentation of action sheets, but there are some limitations and things to keep in mind when using action sheets:
UIModalPresentationStyle.Custom for adaptive presentations (such as when presenting an action sheet from a bar button item).AlertBehaviors is, due to limitations in the Swift/Objective-C interop, not available when using SDCAlertController from Swift. This affects AlertControllerStyle.Alert as well.SDCAlertView is written in Swift, but can be used in both Swift and Objective-C. Corresponding types in Objective-C have the same name they do in Swift, but with an SDC prefix.
let alert = AlertController(title: "Title", message: "This is a message", preferredStyle: .alert)
alert.addAction(AlertAction(title: "Cancel", style: .normal))
alert.addAction(AlertAction(title: "OK", style: .preferred))
alert.present()
// or use the convenience methods:
AlertController.alert(withTitle: "Title", message: "This is a message", actionTitle: "OK")
AlertController.sheet(withTitle: "Action sheet title", "Action sheet message", actions: ["OK", "Cancel"])
let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray)
spinner.translatesAutoresizingMaskIntoConstraints = false
spinner.startAnimating()
let alert = AlertController(title: "Title", message: "Please wait...")
alert.contentView.addSubview(spinner)
spinner.centerXAnchor.constraint(equalTo: alert.contentView.centerXAnchor).isActive = true
spinner.topAnchor.constraint(equalTo: alert.contentView.topAnchor).isActive = true
spinner.bottomAnchor.constraint(equalTo: alert.contentView.bottomAnchor).isActive = true
alert.present()
let alert = AlertController(title: "Title", message: "This is a message")
alert.addAction(AlertAction(title: "Dismiss", style: .preferred))
alert.addAction(AlertAction(title: "Don't dismiss", style: .normal))
alert.shouldDismissHandler = { $0.title == "Dismiss" }
alert.present()
SDCAlertController is a normal view controller, so applying a tintColor to its view will color the buttons and any subviews you add to the contentView.
If you are looking for more customizations, create a subclass of AlertVisualStyle and use visualStyle on the AlertController instance. You can also create an instance of AlertVisualStyle and overwrite the attributes you need (this is mainly intended to be used from Objective-C). Note that after an alert has been presented, changing any of these settings is ignored.
SDCAlertView is distributed under the MIT license.