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 #swift
YOU MIGHT ALSO LIKE...
MijickPopups Hero

  Popups Alerts Resizable Sheets Banners

SwiftUI Tooltip

This package provides you with an easy way to show tooltips over any SwiftUI view, since Apple does not provide ...

SimpleToast for SwiftUI

SimpleToast is a simple, lightweight, flexible and easy to use library to show toasts / popup notifications inside iOS or ...

SSToastMessage

Create Toast Views with Minimal Effort in SwiftUI Using SSToastMessage. SSToastMessage enables you to effortlessly add toast notifications, alerts, and ...

ToastUI

A simple way to show toast in SwiftUI   Getting Started • Documentation • Change Log