swift - 16进制颜色扩展(1.支持# 2.支持不带# , 3支持带0X)

Posted qingzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift - 16进制颜色扩展(1.支持# 2.支持不带# , 3支持带0X)相关的知识,希望对你有一定的参考价值。

 

 

/**
 *  设置16进制颜色:
 *  可识别类型
 *  1:有#
 *  2:没有#
 *  3:含有0X
 */
extension UIColor{
    class func hexadecimalColor(hexadecimal:String)->UIColor{
        var cstr = hexadecimal.trimmingCharacters(in:  CharacterSet.whitespacesAndNewlines).uppercased() as NSString;
        if(cstr.length < 6){
            return UIColor.clear;
        }
        if(cstr.hasPrefix("0X")){
            cstr = cstr.substring(from: 2) as NSString
        }
        if(cstr.hasPrefix("#")){
            cstr = cstr.substring(from: 1) as NSString
        }
        if(cstr.length != 6){
            return UIColor.clear;
        }
        var range = NSRange.init()
        range.location = 0
        range.length = 2
        //r
        let rStr = cstr.substring(with: range);
        //g
        range.location = 2;
        let gStr = cstr.substring(with: range)
        //b
        range.location = 4;
        let bStr = cstr.substring(with: range)
        var r :UInt32 = 0x0;
        var g :UInt32 = 0x0;
        var b :UInt32 = 0x0;
        Scanner.init(string: rStr).scanHexInt32(&r);
        Scanner.init(string: gStr).scanHexInt32(&g);
        Scanner.init(string: bStr).scanHexInt32(&b);
        return UIColor.init(red: CGFloat(r)/255.0, green: CGFloat(g)/255.0, blue: CGFloat(b)/255.0, alpha: 1);
    }
}

  

以上是关于swift - 16进制颜色扩展(1.支持# 2.支持不带# , 3支持带0X)的主要内容,如果未能解决你的问题,请参考以下文章

自写常用扩展类

swift Swift数据扩展,支持将数据转换为十六进制呈现的字符串,并通过十六进制字符串构造数据

iOS开发技巧(系列十八:扩展UIColor,支持十六进制颜色设置)

请问有那位知道粉紫色的16进制代码啊!

ios 怎么把颜色转为16进制

16进制颜色代码记忆规律/?