Swift UIColor 16进制编码转换RGB格式

Swift UIColor 16进制编码转换RGB :

由于UI出图的时候,通常给的是16进制的编码颜色,我们在开发的时候需要将它转换为RGB格式,现在给出两种代码片段,喜欢哪种就用哪种...

 

一、对UIColor进行扩展

 1 extension UIColor {
 2 
 3     /**
 4      Make color with hex string
 5      - parameter hex: 16进制字符串
 6      - returns: RGB
 7      */
 8     static func colorWithHexString (hex: String) -> UIColor {
 9 
10         var cString: String = hex.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercaseString
11 
12         if (cString.hasPrefix("#")) {
13             cString = (cString as NSString).substringFromIndex(1)
14         }
15 
16         if (cString.characters.count != 6) {
17             return UIColor.grayColor()
18         }
19 
20         let rString = (cString as NSString).substringToIndex(2)
21         let gString = ((cString as NSString).substringFromIndex(2) as NSString).substringToIndex(2)
22         let bString = ((cString as NSString).substringFromIndex(4) as NSString).substringToIndex(2)
23 
24         var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0;
25         NSScanner(string: rString).scanHexInt(&r)
26         NSScanner(string: gString).scanHexInt(&g)
27         NSScanner(string: bString).scanHexInt(&b)
28 
29         return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: CGFloat(1))
30     }
31 }

 

 

二、简便方法,直接调用代码片段

个人推荐使用这个方法,创建一个宏定义文件

 1 func kRGBColorFromHex(rgbValue: Int) -> (UIColor) {
 2 
 3         return UIColor(red: ((CGFloat)((rgbValue & 0xFF0000) >> 16)) / 255.0,
 4                  green: ((CGFloat)((rgbValue & 0xFF00) >> 8)) / 255.0,
 5                   blue: ((CGFloat)(rgbValue & 0xFF)) / 255.0,
 6                  alpha: 1.0)
 7 }
 8 
 9 可以这样调用
10 kRGBColorFromHex(0x1D1D26)

 

posted @ 2016-08-26 10:37  乐启榜  阅读(7242)  评论(0编辑  收藏  举报