将 16进制 装换为 RGB

很多时候都使用 #XXXXXX 这种16进制的颜色值,在ios中需要转换为 RGB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/// 转换 uicolor 颜色
func strConvertColor(colorStr:String , alpha:CGFloat = 1 ) -> UIColor {
//删除字符串中的空格
var str:String = colorStr.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet()).uppercaseString

if str.hasPrefix("0X"){
//如果是0x开头的,那么截取字符串,字符串从索引为2的位置开始,一直到末尾
let index = str.startIndex.advancedBy(2)
str = str.substringFromIndex(index)
}else if str.hasPrefix("#"){
//如果是#开头的,那么截取字符串,字符串从索引为1的位置开始,一直到末尾
let index = str.startIndex.advancedBy(1)
str = str.substringFromIndex(index)
}
if str.characters.count != 6 {
return UIColor.clearColor()
}

let rString = (str as NSString).substringToIndex(2)
let gString = ((str as NSString).substringFromIndex(2) as NSString).substringToIndex(2)
let bString = ((str as NSString).substringFromIndex(4) as NSString).substringToIndex(2)

var r:CUnsignedInt = 0, g:CUnsignedInt = 0, b:CUnsignedInt = 0;
NSScanner(string: rString).scanHexInt(&r)
NSScanner(string: gString).scanHexInt(&g)
NSScanner(string: bString).scanHexInt(&b)

return UIColor(red: CGFloat(r) / 255.0, green: CGFloat(g) / 255.0, blue: CGFloat(b) / 255.0, alpha: alpha )
}

本文标题:将 16进制 装换为 RGB

文章作者:史彦超

发布时间:2016年10月11日 - 22:10

最后更新:2021年07月20日 - 16:07

原始链接:https://doingself.github.io/2016/10/11/2016-10-11-%E5%B0%8616%E8%BF%9B%E5%88%B6%E8%A3%85%E6%8D%A2%E4%B8%BARGB/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Donate comment here