Since iOS 5, you can use UIColor's getRed(_:green:blue:alpha)
method (here shown in Swift):
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
let color = UIColor.systemGreen
// getRed(_:green:blue:alpha) returns 'true' on successful conversion
if color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
{
print("red: \(red)\ngreen: \(green)\nblue: \(blue)\nalpha: \(alpha)")
}
/*
which for `systemGreen` in light mode prints:
red: 0.20392156862745098
green: 0.7803921568627451
blue: 0.34901960784313724
alpha: 1.0
*/
and, as a computed property in an extension to UIColor
:
extension UIColor {
var rgbaComponents: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) {
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
getRed(&red, green: &green, blue: &blue, alpha: &alpha)
return (red, green, blue, alpha)
}
}