源码(source code)
convenience init(hexCode: String) {
var cString:String = hexCode.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
if (cString.hasPrefix("#")) {
cString.remove(at: cString.startIndex)
}
if ((cString.count) != 6) {
self.init()
} else {
var rgbValue:UInt32 = 0
Scanner(string: cString).scanHexInt32(&rgbValue)
self.init(red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: 1)
}
}
用法:
view.backgroundColor = UIColor(hex: "#007CD1")
Key Point:
- 使用
Scanner
将字符串转换成十六进制数;
- 使用 AND (&) 和 >> 右移两种位操作来分离颜色的三个部分。