GitPedia

PMAlertController

PMAlertController is a great and customizable alert that can substitute UIAlertController

From pmusolino·Updated June 14, 2026·View on GitHub·

PMAlertController is a small library that allows you to substitute Apple's uncustomizable `UIAlertController`, with a beautiful and totally customizable alert that you can use in your iOS app. Enjoy! The project is written primarily in Swift, distributed under the MIT License license, first published in 2016. It has gained significant community traction with 2,505 stars and 184 forks on GitHub. Key topics include: alert, banner, dialog, modal, popup.

Latest release: 4.0.1
September 7, 2020View Changelog →
<p align="center"> <img src="https://raw.githubusercontent.com/pmusolino/PMAlertController/master/logo_pmalertcontroller.png" alt="Icon"/> </p>

Language
GitHub license
Pod version
Carthage Compatible

PMAlertController is a small library that allows you to substitute Apple's uncustomizable UIAlertController, with a beautiful and totally customizable alert that you can use in your iOS app. Enjoy!

<p align="center"> <img src="https://raw.githubusercontent.com/pmusolino/PMAlertController/master/preview_pmalertacontroller.png" width=800 alt="Icon"/> </p>

Features


  • Header View
  • Header Image (Optional)
  • Title
  • Description message
  • Customizations: fonts, colors, dimensions & more
  • 1, 2 buttons (horizontally) or 3+ buttons (vertically)
  • Closure when a button is pressed
  • Text Fields support
  • Similar implementation to UIAlertController
  • Cocoapods
  • Carthage
  • Animation with UIKit Dynamics
  • Objective-C compatibility
  • Swift 4, Swift 4.2 & Swift 5 support
  • Swift Package Manager

Requirements


  • iOS 9.0+
  • Xcode 10+

CocoaPods


CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

bash
$ gem install cocoapods

To integrate PMAlertController into your Xcode project using CocoaPods, specify it in your Podfile:

ruby
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' use_frameworks! pod 'PMAlertController'

Then, run the following command:

bash
$ pod install

Carthage


Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

bash
$ brew update $ brew install carthage

To integrate PMAlertController into your Xcode project using Carthage, specify it in your Cartfile:

ogdl
github "pmusolino/PMAlertController"

Run carthage update to build the framework and drag the built PMAlertController.framework into your Xcode project.

Manually


  1. Download and drop /Library folder in your project.
  2. Congratulations!

Usage


The usage is very similar to UIAlertController.
PMAlertController has two styles: Alert & Walkthrough.

Alert Style: with this style, the alert has the width of 270 points, like Apple's UIAlertController.

Walkthrough Style: with walkthrough, the alert has the width of the screen minus 18 points from the left and the right bounds. This mode is intended to be used before authorization requests like the ones for location, push notifications and more.

Show a simple alert with two buttons and one textfield

swift
//This code works with Swift 5 let alertVC = PMAlertController(title: "A Title", description: "My Description", image: UIImage(named: "img.png"), style: .alert) alertVC.addAction(PMAlertAction(title: "Cancel", style: .cancel, action: { () -> Void in print("Capture action Cancel") })) alertVC.addAction(PMAlertAction(title: "OK", style: .default, action: { () in print("Capture action OK") })) alertVC.addTextField { (textField) in textField?.placeholder = "Location..." } self.present(alertVC, animated: true, completion: nil)

Swift compatibility

Third Party Bindings

React Native

You may now use this library with React Native via the module here

Contributing

  • If you need help or you'd like to ask a general question, open an issue.
  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Acknowledgements

Made with ❤️ by Paolo Musolino.

Follow me on:

💼 Linkedin

🤖 Twitter

🌇 Instagram

👨🏼‍🎤 Facebook

MIT License


PMAlertController is available under the MIT license. See the LICENSE file for more info.

Contributors

Showing top 12 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from pmusolino/PMAlertController via the GitHub API.Last fetched: 6/14/2026