SimpleAlert

Customizable simple Alert and simple ActionSheet for Swift

Github星跟踪图

SimpleAlert

Carthage compatible
Version
License
Platform

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

Author

Kyohei Ito

Follow me ?

LICENSE

Under the MIT license. See LICENSE file for details.

主要指标

概览
名称与所有者KyoheiG3/SimpleAlert
主编程语言Swift
编程语言Swift (语言数: 3)
平台
许可证MIT License
所有者活动
创建于2015-01-09 09:14:01
推送于2023-09-07 10:25:10
最后一次提交2023-09-07 19:25:10
发布数33
最新版本名称5.1.0 (发布于 )
第一版名称0.0.1 (发布于 )
用户参与
星数399
关注者数16
派生数45
提交数117
已启用问题?
问题数31
打开的问题数2
拉请求数13
打开的拉请求数0
关闭的拉请求数5
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?