func colorWithHexString(hexColor : String) -> UIColor {
if hexColor.isEmpty {
return UIColor.clear
}
var cString = hexColor.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines)
// String should be 6 or 8 characters
if cString.characters.count < 6 {
return UIColor.clear
}
// strip 0X if it appears
if cString.hasPrefix("0X") || cString.hasPrefix("0x") {
cString.remove(at: cString.startIndex)
cString.remove(at: cString.startIndex)
}
if cString.hasPrefix("#") {
cString.remove(at: cString.startIndex)
}
if cString.characters.count != 6 {
return UIColor.clear
}
let rRange = cString.startIndex ..< cString.index(cString.startIndex, offsetBy: 2)
let rString = cString.substring(with: rRange)
let gRange = cString.index(cString.startIndex, offsetBy: 2) ..< cString.index(cString.startIndex, offsetBy: 4)
let gString = cString.substring(with: gRange)
let bRange = cString.index(cString.startIndex, offsetBy: 4) ..< cString.index(cString.startIndex, offsetBy: 6)
let bString = cString.substring(with: bRange)
var r : UInt32 = 0
var g : UInt32 = 0
var b : UInt32 = 0
let rScanner:Scanner = Scanner.localizedScanner(with: rString) as! Scanner
rScanner.scanHexInt32(&r)
let gScanner:Scanner = Scanner.localizedScanner(with: gString) as! Scanner
gScanner.scanHexInt32(&g)
let bScanner:Scanner = Scanner.localizedScanner(with: bString) as! Scanner
bScanner.scanHexInt32(&b)
let color = UIColor(red: CGFloat(r)/255.0, green: CGFloat(g)/255.0, blue: CGFloat(b)/255.0, alpha: 1.0)
return color
}