ios初步开发,将16进制颜色转变成ios可用的颜色

来源:互联网 发布:耳机测试软件 编辑:程序博客网 时间:2024/05/16 17:56

第一次写博客,算是把自己的学习记录做个笔记把,留给自己以后参考的,先写一个学习的将颜色转换的方法,

+ (UIColor *)colorFromHexRGB:(NSString *)inColorString {
    UIColor *result = nil;
    unsigned int colorCode = 0;
    unsigned char redByte, greenByte, blueByte;
    if (nil != inColorString) {
        NSScanner *scnaner = [NSScanner scannerWithString:inColorString];
        (void)[scnaner scanHexInt:&colorCode];
    }
    NSLog(@"%i", colorCode);
    //例如   16743167转成二进制 @"11111111 01111010 11111111"; 然后取最后8位,右移16位之后11111111,右移8位01111010,不右移11111111
    redByte = (unsigned char)(colorCode >>16);//二进制右移16位,相当于colorcode除2的16次方
    NSLog(@"redByte:%i", redByte);
    greenByte = (unsigned char)(colorCode >> 8);
    NSLog(@"greenByte:%i", greenByte);
    blueByte = (unsigned char)(colorCode);
    NSLog(@"blueByte:%i", blueByte);
    NSLog(@"redByte/0xff%f", (float)redByte/0xff);
    result = [UIColor colorWithRed:(float)redByte/0xff green:(float)greenByte/0xff blue:(float)blueByte/0xff alpha:1];
    return result;
}

如果传入FF7AFF

//例如  colorCode的值是16743167, 转成二进制为@"11111111 01111010 11111111";

>>(x) 代表右移x位

然后取最后8位,右移16位之后11111111,右移8位01111010,不右移11111111

所以redByte为11111111转成整形即为255

然后除以0xff(16进制)也是255;

最后返回的值即为UIColor

0 0