iOS 色值的16进制转换

来源:互联网 发布:ck手表知乎 编辑:程序博客网 时间:2024/06/05 17:07

一般在开发的时候,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 = [NSScannerscannerWithString:inColorString];

        (void) [scannerscanHexInt:&colorCode]; // ignore error

    }

    redByte = (unsignedchar) (colorCode >> 16);

    greenByte = (unsignedchar) (colorCode >> 8);

    blueByte = (unsignedchar) (colorCode); // masks off high bits

    result = [UIColor

             colorWithRed: (float)redByte /0xff

             green: (float)greenByte/0xff

             blue: (float)blueByte /0xff

             alpha:1.0];

   return result;

}



0 0