一般在开发的时候,UI设计师会使用类似马克鳗的工具来添加色值,而这些色值往往是16进制的,
所以对于工程师在使用的时候,则需要转换成RGB值使用
原理:通过传入的 inColorString字符串,使用NSScanner这个抽象超类集群,从头至尾,扫描传入的这个字符串,然后转化为无符号Int型,然后方法会返回一个RGB格式的UIColor格式的对象。代码如下
#pragma mark - 工具方法
/*!
* @method 通过16进制计算颜色
* @abstract
* @discussion
* @param 16机制
* @result 颜色对象
*/
- (UIColor *)colorFromHexRGB:(NSString *)inColorString
{
UIColor *result = nil;
unsigned int colorCode = 0;
unsigned char redByte, greenByte, blueByte;
if (nil != inColorString)
{
NSScanner *scanner = [NSScanner scannerWithString:inColorString];
(void) [scanner scanHexInt:&colorCode]; // ignore error
}
redByte = (unsigned char) (colorCode >> 16);
greenByte = (unsigned char) (colorCode >> 8);
blueByte = (unsigned char) (colorCode); // masks off high bits
result = [UIColor
colorWithRed: (float)redByte / 0xff
green: (float)greenByte/ 0xff
blue: (float)blueByte / 0xff
alpha:1.0];
return result;
}