在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)