How to change tint color of UIAlertController?
You could just change the tintColor
of the underlying view, however, due to a known bug introduced in iOS 9 (https://openradar.appspot.com/22209332), the tintColor is overridden by the application window's tintColor
.
You can either:
Change the app
tintColor
in the AppDelegate.func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool { self.window.tintColor = UIColor.redColor() return true }
Reapply the color in the completion block.
self.presentViewController(alert, animated: true, completion: {() -> Void in alert.view.tintColor = UIColor.redColor() })
In Swift, you could do something like this:
let alert = UIAlertController(title: "Alert", message: "This is an alert.", preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "OK", style: .Default, handler: nil))
alert.view.tintColor = UIColor.redColor()
self.presentViewController(alert, animated: true, completion: nil)
In Swift 4 and Xcode 9.2
let alertView = UIAlertController(title: "", message: "", preferredStyle: .alert)
alertView.addAction(UIAlertAction(title: "CONFIRM", style: .default, handler: { (alertAction) -> Void in
//my logic
}))
alertView.addAction(UIAlertAction(title: "CANCEL", style: .default, handler: nil))
alertView.view.tintColor = UIColor.init(red: 45.0/255.0, green: 187.0/255.0, blue: 135.0/255.0, alpha: 1.0)
present(alertView, animated: true, completion: nil)