SimpleAlert
It is simple and easily customizable alert.
Can be used as UIAlertController.
Appetize's Demo
Requirements
- Swift 5.0
- iOS 9.0 or later
How to Install SimpleAlert
Cocoapods
Add the following to your Podfile:
pod "SimpleAlert"Carthage
Add the following to your Cartfile:
github "KyoheiG3/SimpleAlert"Usage
Example
View simple Alert
let alert = AlertController(title: "title", message: "message", style: .alert)
alert.addTextField()
alert.addAction(AlertAction(title: "Cancel", style: .cancel))
alert.addAction(AlertAction(title: "OK", style: .ok))
present(alert, animated: true, completion: nil)Customize default contents
let alert = AlertController(title: "title", message: "message", style: .alert)
alert.addTextField { textField in
textField.frame.size.height = 33
textField.backgroundColor = nil
textField.layer.borderColor = nil
textField.layer.borderWidth = 0
}
alert.configureContentView { view in
view.titleLabel.textColor = UIColor.lightGrayColor()
view.titleLabel.font = UIFont.boldSystemFontOfSize(30)
view.messageLabel.textColor = UIColor.lightGrayColor()
view.messageLabel.font = UIFont.boldSystemFontOfSize(16)
view.textBackgroundView.layer.cornerRadius = 3.0
view.textBackgroundView.clipsToBounds = true
}
alert.addAction(AlertAction(title: "Cancel", style: .cancel))
alert.addAction(AlertAction(title: "OK", style: .ok))
present(alert, animated: true, completion: nil)
Rounded button Alert View
let alert = AlertController(view: UIView(), style: .alert)
alert.contentWidth = 144
alert.contentCornerRadius = 72
alert.contentColor = .white
let action = AlertAction(title: "?", style: .cancel) { action in
}
alert.addAction(action)
action.button.frame.size.height = 144
action.button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 96)
action.button.setTitleColor(UIColor.red, for: .normal)
present(alert, animated: true, completion: nil)More customizable if you create a subclass
class CustomAlertController: AlertController {
override func addTextField(configurationHandler: ((UITextField) -> Void)? = nil) {
super.addTextField { textField in
textField.frame.size.height = 33
textField.backgroundColor = nil
textField.layer.borderColor = nil
textField.layer.borderWidth = 0
configurationHandler?(textField)
}
}
override func configureActionButton(_ button: UIButton, at style :AlertAction.Style) {
super.configureActionButton(button, at: style)
switch style {
case .ok:
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 20)
button.setTitleColor(UIColor.gray, for: UIControlState())
case .cancel:
button.backgroundColor = UIColor.darkGray
button.setTitleColor(UIColor.white, for: UIControlState())
case .default:
button.setTitleColor(UIColor.lightGray, for: UIControlState())
default:
break
}
}
override func configureContentView(_ contentView: AlertContentView) {
super.configureContentView(contentView)
contentView.titleLabel.textColor = UIColor.lightGray
contentView.titleLabel.font = UIFont.boldSystemFont(ofSize: 30)
contentView.messageLabel.textColor = UIColor.lightGray
contentView.messageLabel.font = UIFont.boldSystemFont(ofSize: 16)
contentView.textBackgroundView.layer.cornerRadius = 10.0
contentView.textBackgroundView.clipsToBounds = true
}
}Class
AlertAction
Style
- default
- ok
- cancel
- destructive
Initialize
init(title: String, style: SimpleAlert.AlertAction.Style, dismissesAlert: Bool = default, handler: ((SimpleAlert.AlertAction?) -> Swift.Void)? = default)- Set title and style, can add button.
- Set button action handler.
Variable
var isEnabled: Bool- Set button enabled.
let button: UIButton- Can get a button.
- Can get after button has been added to the
AlertController.
AlertContentView
backgroundColor of AlertContentView will be reflected in the overall backgroundColor.
var baseView: UIView!- Base view for contents
var titleLabel: UILabel!- Title label
var messageLabel: UILabel!- Message Label
var textBackgroundView: UIView!- Base view for Text Field
UIAlertControllerStyleis in the case ofactionSheetdoes not appear.
AlertController
Initialize
init(title: String?, message: String?, style: UIAlertControllerStyle)- Set title, message and style, can add button.
- Set button action handler.
init(title: String? = default, message: String? = default, view: UIView?, style: UIAlertControllerStyle)- Can also set custom view.
Variable
open var contentWidth: CGFloat
open var contentColor: UIColor?
open var contentCornerRadius: CGFloat?
open var coverColor: UIColor
open var message: String?- Can change alert style.
public private(set) var actions: [SimpleAlert.AlertAction]
public var textFields: [UITextField] { get }- Can get actions and text fields that is added.
Function
func addTextField(configurationHandler: ((UITextField) -> Swift.Void)? = default)- Add Text Field, and set handler.
UIAlertControllerStyleis in the case ofactionSheetdoes not add.
func addAction(_ action: SimpleAlert.AlertAction)- Add action button.
func configureActionButton(_ button: UIButton, at style: SimpleAlert.AlertAction.Style)- Override if would like to configure action button.
func configureContentView(_ contentView: SimpleAlert.AlertContentView)- Override if would like to configure content view.
The difference between default UIAlertController
- Can add a cancel button any number of the
actionSheet. - If tap the outside of the view, the action handler will not be executed of the
actionSheet.
Author
Kyohei Ito
Follow me
LICENSE
Under the MIT license. See LICENSE file for details.



