Skip to content

Instantly share code, notes, and snippets.

@chuthan20
Last active August 27, 2016 16:41
Show Gist options
  • Save chuthan20/320954043bc236d2cc9d5c4a212c2d7c to your computer and use it in GitHub Desktop.
Save chuthan20/320954043bc236d2cc9d5c4a212c2d7c to your computer and use it in GitHub Desktop.
Converting from hex to UIColor
extension UIColor {
static func from(hex: String) -> UIColor? {
assert(hex.characters.first! == "#", "Maybe not a valid colour \(hex)")
var val = hex.substringFromIndex(hex.startIndex.advancedBy(1))
switch val.characters.count {
case 3: val.appendContentsOf("f"); fallthrough
case 4: val = val.characters.map{"\($0)\($0)"}.joinWithSeparator("")
case 6: val.appendContentsOf("ff")
case 8: do {}
default: return nil // not proper format: #rgb, #rgba, #rrggbb, #rrggbbaa
}
if let hexColor = Int64.init(val, radix: 16) {
let r = CGFloat((hexColor & 0xFF000000) >> 24) / 255.0
let g = CGFloat((hexColor & 0x00FF0000) >> 16) / 255.0
let b = CGFloat((hexColor & 0x0000FF00) >> 08) / 255.0
let a = CGFloat((hexColor & 0x000000FF) >> 00) / 255.0
return UIColor(red: r, green: g, blue: b, alpha: a)
} else {
return nil
}
}
}
print(UIColor.from("#F00")!) // UIDeviceRGBColorSpace 1 0 0 1
print(UIColor.from("#0F0")!) // UIDeviceRGBColorSpace 0 1 0 1
print(UIColor.from("#00F")!) // UIDeviceRGBColorSpace 0 0 1 1
print(UIColor.from("#FF0000")!) // UIDeviceRGBColorSpace 1 0 0 1
print(UIColor.from("#00FF00")!) // UIDeviceRGBColorSpace 0 1 0 1
print(UIColor.from("#0000FF")!) // UIDeviceRGBColorSpace 0 0 1 1
print(UIColor.from("#FF000000")!) // UIDeviceRGBColorSpace 1 0 0 0
print(UIColor.from("#00FF0000")!) // UIDeviceRGBColorSpace 0 1 0 0
print(UIColor.from("#0000FF00")!) // UIDeviceRGBColorSpace 0 0 1 0
print(UIColor.from("#000000FF")!) // UIDeviceRGBColorSpace 0 0 0 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment