Created
June 5, 2018 09:00
-
-
Save anthonyvitocuaderno/3fb9f6317465e88dfd5bbb08b8381395 to your computer and use it in GitHub Desktop.
iOS Swift 3.3 UIColor extension
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
extension UIColor { | |
convenience init(hex: String) { | |
self.init(hex: hex, alpha:1) | |
} | |
convenience init(hex: String, alpha: CGFloat) { | |
let hexWithoutSymbol = hex | |
let scanner = Scanner(string: hexWithoutSymbol) | |
var hexInt:UInt32 = 0x0 | |
scanner.scanHexInt32(&hexInt) | |
var r:UInt32 = 255, g:UInt32 = 255, b:UInt32 = 255 | |
switch (hexWithoutSymbol.count) { | |
case 3: // #RGB | |
r = ((hexInt >> 4) & 0xf0 | (hexInt >> 8) & 0x0f) | |
g = ((hexInt >> 0) & 0xf0 | (hexInt >> 4) & 0x0f) | |
b = ((hexInt << 4) & 0xf0 | hexInt & 0x0f) | |
break; | |
case 6: // #RRGGBB | |
r = (hexInt >> 16) & 0xff | |
g = (hexInt >> 8) & 0xff | |
b = hexInt & 0xff | |
break; | |
default: | |
printE("UIColor extension error failed convenience init(hex alpha)") | |
break | |
} | |
self.init( | |
red: (CGFloat(r) / 255), | |
green: (CGFloat(g) / 255), | |
blue: (CGFloat(b) / 255), | |
alpha:alpha) | |
} | |
class func randomFlatColor(index:Int = -1) -> UIColor { | |
let colors:[(red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)] = [ | |
(red: 210, green: 77, blue: 87, alpha: 1.0), | |
(red: 217, green: 30, blue: 24, alpha: 1.0), | |
(red: 150, green: 40, blue: 27, alpha: 1.0), | |
(red: 220, green: 198, blue: 224, alpha: 1.0), | |
(red: 103, green: 65, blue: 114, alpha: 1.0), | |
(red: 68, green: 108, blue: 179, alpha: 1.0), | |
(red: 210, green: 77, blue: 87, alpha: 1.0), | |
(red: 228, green: 241, blue: 254, alpha: 1.0), | |
(red: 65, green: 131, blue: 215, alpha: 1.0), | |
(red: 89, green: 171, blue: 227, alpha: 1.0), | |
(red: 129, green: 207, blue: 224, alpha: 1.0), | |
(red: 82, green: 179, blue: 217, alpha: 1.0), | |
(red: 197, green: 239, blue: 247, alpha: 1.0), | |
(red: 34, green: 167, blue: 240, alpha: 1.0), | |
(red: 52, green: 152, blue: 219, alpha: 1.0), | |
(red: 44, green: 62, blue: 80, alpha: 1.0), | |
(red: 25, green: 181, blue: 254, alpha: 1.0), | |
(red: 51, green: 110, blue: 123, alpha: 1.0), | |
(red: 34, green: 49, blue: 63, alpha: 1.0), | |
(red: 30, green: 139, blue: 195, alpha: 1.0), | |
(red: 58, green: 83, blue: 155, alpha: 1.0), | |
(red: 52, green: 73, blue: 94, alpha: 1.0), | |
(red: 103, green: 128, blue: 159, alpha: 1.0), | |
(red: 37, green: 116, blue: 169, alpha: 1.0), | |
(red: 31, green: 58, blue: 147, alpha: 1.0), | |
(red: 137, green: 196, blue: 244, alpha: 1.0), | |
(red: 75, green: 119, blue: 190, alpha: 1.0), | |
(red: 92, green: 151, blue: 191, alpha: 1.0), | |
(red: 78, green: 205, blue: 196, alpha: 1.0), | |
(red: 162, green: 222, blue: 208, alpha: 1.0), | |
(red: 135, green: 211, blue: 124, alpha: 1.0), | |
(red: 144, green: 198, blue: 149, alpha: 1.0), | |
(red: 38, green: 166, blue: 91, alpha: 1.0), | |
(red: 3, green: 201, blue: 169, alpha: 1.0), | |
(red: 104, green: 195, blue: 163, alpha: 1.0), | |
(red: 101, green: 198, blue: 187, alpha: 1.0), | |
(red: 27, green: 188, blue: 155, alpha: 1.0), | |
(red: 27, green: 163, blue: 156, alpha: 1.0), | |
(red: 102, green: 204, blue: 153, alpha: 1.0), | |
(red: 54, green: 215, blue: 183, alpha: 1.0), | |
(red: 200, green: 247, blue: 197, alpha: 1.0), | |
(red: 134, green: 226, blue: 213, alpha: 1.0), | |
(red: 46, green: 204, blue: 113, alpha: 1.0), | |
(red: 22, green: 160, blue: 133, alpha: 1.0), | |
(red: 63, green: 195, blue: 128, alpha: 1.0), | |
(red: 1, green: 152, blue: 117, alpha: 1.0), | |
(red: 3, green: 166, blue: 120, alpha: 1.0), | |
(red: 77, green: 175, blue: 124, alpha: 1.0), | |
(red: 42, green: 187, blue: 155, alpha: 1.0), | |
(red: 0, green: 177, blue: 106, alpha: 1.0), | |
(red: 30, green: 130, blue: 76, alpha: 1.0), | |
(red: 4, green: 147, blue: 114, alpha: 1.0), | |
(red: 38, green: 194, blue: 129, alpha: 1.0), | |
(red: 253, green: 227, blue: 167, alpha: 1.0), | |
(red: 248, green: 148, blue: 6, alpha: 1.0), | |
(red: 235, green: 149, blue: 50, alpha: 1.0), | |
(red: 232, green: 126, blue: 4, alpha: 1.0), | |
(red: 244, green: 178, blue: 80, alpha: 1.0), | |
(red: 242, green: 120, blue: 75, alpha: 1.0), | |
(red: 235, green: 151, blue: 78, alpha: 1.0), | |
(red: 254, green: 171, blue: 53, alpha: 1.0), | |
(red: 211, green: 84, blue: 0, alpha: 1.0), | |
(red: 243, green: 156, blue: 18, alpha: 1.0), | |
(red: 249, green: 105, blue: 14, alpha: 1.0), | |
(red: 249, green: 191, blue: 59, alpha: 1.0), | |
(red: 242, green: 121, blue: 53, alpha: 1.0), | |
(red: 230, green: 126, blue: 34, alpha: 1.0), | |
(red: 236, green: 236, blue: 236, alpha: 1.0), | |
(red: 108, green: 122, blue: 137, alpha: 1.0), | |
(red: 210, green: 215, blue: 211, alpha: 1.0), | |
(red: 238, green: 238, blue: 238, alpha: 1.0), | |
(red: 189, green: 195, blue: 199, alpha: 1.0), | |
(red: 236, green: 240, blue: 241, alpha: 1.0), | |
(red: 149, green: 165, blue: 166, alpha: 1.0), | |
(red: 218, green: 223, blue: 225, alpha: 1.0), | |
(red: 171, green: 183, blue: 183, alpha: 1.0), | |
(red: 242, green: 241, blue: 239, alpha: 1.0), | |
(red: 191, green: 191, blue: 191, alpha: 1.0) | |
] | |
var randomIndex = 0 | |
if index >= 0 { | |
if index < colors.count { | |
randomIndex = index | |
} else { | |
randomIndex = index % (colors.count - 1) | |
} | |
} else { | |
randomIndex = Int(arc4random_uniform(UInt32(colors.count))) | |
} | |
let randomColor = colors[randomIndex] | |
return UIColor( | |
red: randomColor.red / 255, | |
green: randomColor.green / 255, | |
blue: randomColor.blue / 255, | |
alpha: randomColor.alpha) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment