16进制颜色转换成UIColor

最近公司项目里有一处文本需要设置不同颜色,而后台传过来的是16进制的颜色(如:#FF6666),想要把16进制的颜色转换成UIColor类型的,只需要写一个方法就行:

- (UIColor *)colorWithHexColorString:(NSString *)hexColorString{
    if ([hexColorString length] <6){//长度不合法
        return [UIColor clearColor];
    }
    NSString *tempString=[hexColorString lowercaseString];
    if ([tempString hasPrefix:@"0X"]){//检查开头是0x
        tempString = [tempString substringFromIndex:2];
    }
    else if ([tempString hasPrefix:@"#"]){//检查开头是#
        tempString = [tempString substringFromIndex:1];
    }
    if ([tempString length] != 6){
        return [UIColor clearColor];
    }
    //分解三种颜色的值
    NSRange range;
    range.location = 0;
    range.length = 2;
    
    // r
    NSString *rString = [tempString substringWithRange:range];
    // g
    range.location = 2;
    NSString *gString = [tempString substringWithRange:range];
    // b
    range.location = 4;
    NSString *bString = [tempString substringWithRange:range];
    //取三种颜色值
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString]scanHexInt:&r];
    [[NSScanner scannerWithString:gString]scanHexInt:&g];
    [[NSScanner scannerWithString:bString]scanHexInt:&b];
    return [UIColor colorWithRed:((float) r /255.0f)
                           green:((float) g /255.0f)
                            blue:((float) b /255.0f)
                           alpha:1.0f];
}

然后调用

self.label.textColor = [self colorWithHexColorString:@"#FF6666"];

就OK了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,681评论 0 17
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • 【1023打卡话题】 今天的文章《本周经典复盘——你最喜欢哪一篇,新的一周有啥新感悟哈?》你有什么感悟? 复习五 ...
    石三英语阅读 197评论 0 0
  • 水有性情,或平静,或暴烈;或舒缓温柔,或湍急匆匆;时而凝结如甘露剔透,时而挥洒如大雨磅礴。 水之性情在因势利导,在...
    韧性十足的牛皮糖阅读 906评论 0 0
  • 妈呀,真实感受,看不下去,一直黑漆麻黑,明明3d渣的像2d,还得抗副眼睛,神经病啊什么电影都来个三弟,疯了! 剧情...
    文艺招财喵阅读 536评论 0 2