Swift version: 5.6
Creating a UIColor
from red, green, blue, and alpha (RGBA) is easy enough:
let color = UIColor(red: 0.8, green: 0.1, blue: 0.5, alpha: 1)
But when you want to read those values back, you need to do a little more work. UIColor
has a built-in method called getRed()
, which unpacks the RGBA values into variable floats – you need to create four variables first, then pass them in by reference:
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
When that runs, red
will have 0.8, green
will have 0.1, and so on.
Because this is a pain to use you might find it best to wrap it up in an extension:
extension UIColor {
var rgba: (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)
}
}
Now you can use color.rgba
to get back a tuple of all four color values.
SAVE 50% To celebrate WWDC22, all our books and bundles are half price, so you can take your Swift knowledge further without spending big! Get the Swift Power Pack to build your iOS career faster, get the Swift Platform Pack to builds apps for macOS, watchOS, and beyond, or get the Swift Plus Pack to learn advanced design patterns, testing skills, and more.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 5.0
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.