SimpleAlert
  • October 28, 2023

It is simple and easily customizable alert. Can be used as UIAlertController.

Appetize’s Demo

default_view custom_view custom_content rounded_view

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
  • UIAlertControllerStyle is in the case of actionSheet does 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.
  • UIAlertControllerStyle is in the case of actionSheet does 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.

GitHub


View Github

#customizable #ios #simplealert #swift
YOU MIGHT ALSO LIKE...
EEStackLayout

A vertical stackview which takes subviews with different widths and adds them to it's rows with paddings, spacings etc.

AudioManager

AudioManager is a Swift package that provides a modular and easy-to-use interface for implementing audio feedback in your applications. It ...

CameraBackground

Features Both front and back camera supported. Flash modes: auto, on, off. Countdown timer. Tap to focus. Pinch to zoom. Usage  

DKCamera

Description A light weight & simple & easy camera for iOS by Swift. It uses CoreMotion framework to detect device orientation, so ...