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...
SVGView

Overview The goal of this project is to bring the full power of SVG to Apple platforms. Our framework can ...

WrappingHStack

WrappingHStack is a UI Element that works in a very similar way to HStack, but automatically positions overflowing elements on ...

SwiftSpeech

Recognize your user's voice elegantly without having to figure out authorization and audio engines. SwiftSpeech Examples Features Installation Getting Started ...

SwiftUIValueSlider

Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements iOS 14.0 Installation ...

Sliders

Sliders is a compilation of all my stylable drag based SwiftUI components. It provides a variety of unique controls as well ...