Changing UIAlertAction text color
If you use the standard iOS UIAlertController
to present the user with a list of actions, there is not much you can do about styling each of the UIAlertAction
s shown.
The text of the shown UIAlertAction
uses the UIView
’s tint color, so you can use the UIAppearence
API to change it to any color you want, but the same color for all the UIAlertAction
s. If you set the style to destructive
instead of default
, the text is shown as red, not affected by the tint color.
UIAlertController
with one default
and one destructive
action might then look like this with dark blue set as the global tint color using UIAppearence
:
The red color for the destructive option does not look that great, especially if your app uses a different shade of red everywhere else.
If you dive deep into Apple documentation you will find a KVC called titleTextColor
. This KVC allows you to set exactly what you need, the color for the UIAlertAction
text.
You can then use a simple extension
extension UIAlertAction {
var titleTextColor: UIColor? {
get {
return self.value(forKey: "titleTextColor") as? UIColor
} set {
self.setValue(newValue, forKey: "titleTextColor")
}
}
}
to use the correct shade of red for your destructive actions
or to make any of the UIAlertAction
s to be shown in any color you want or need.