现在的位置: 首页 > 综合 > 正文

iOS开发 十六进制颜色值转UIColor

2018年01月25日 ⁄ 综合 ⁄ 共 1188字 ⁄ 字号 评论关闭

在iOS开发中,经常有设计给到的颜色值是类似0xffaabb,或者#FFFFFF这种格式的,对于iOS内置的颜色处理UIColor来说,是无法直接处理使用的,因此需要做一个转换,转换方式如下:

+(UIColor *)colorWithHexColorString:(NSString *)hexColorString{
   if ([hexColorStringlength] <6){//长度不合法
       return [UIColorblackColor];
    }
   NSString *tempString=[hexColorStringlowercaseString];
   if ([tempStringhasPrefix:@"0x"]){//检查开头是0x
        tempString = [tempStringsubstringFromIndex:2];
    }elseif ([tempStringhasPrefix:@"#"]){//检查开头是#
        tempString = [tempStringsubstringFromIndex:1];
    }
   if ([tempStringlength] !=6){
       return [UIColorblackColor];
    }
    //分解三种颜色的值
   NSRange range;
    range.location =0;
    range.length =2;
   NSString *rString = [tempStringsubstringWithRange:range];
    range.location =2;
   NSString *gString = [tempStringsubstringWithRange:range];
    range.location =4;
   NSString *bString = [tempStringsubstringWithRange:range];
    //取三种颜色值
   unsignedint r, g, b;
    [[NSScannerscannerWithString:rString]scanHexInt:&r];
    [[NSScannerscannerWithString:gString]scanHexInt:&g];
    [[NSScannerscannerWithString:bString]scanHexInt:&b];
   return [UIColorcolorWithRed:((float) r /255.0f)
                          green:((float) g /255.0f)
                           blue:((float) b /255.0f)
                          alpha:1.0f];
}

另外,还有简化版的,用宏的方式:

#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]
#define RGB(r,g,b) RGBA(r,g,b,1)

使用方式为:RGB(0xff,0xff,0xff)

抱歉!评论已关闭.