十六进制色值转换

来源:互联网 发布:天气在线软件下载 编辑:程序博客网 时间:2024/05/16 06:59

+ (UIColor *)colorWithHexString:(id)hexString

{

    if (![hexStringisKindOfClass:[NSStringclass]] || [hexString length] ==0) {

        return [UIColorcolorWithRed:0.0fgreen:0.0fblue:0.0falpha:1.0f];

    }

    

    constchar *s = [hexString cStringUsingEncoding:NSASCIIStringEncoding];

    if (*s =='#') {

        ++s;

    }

    unsignedlong long value =strtoll(s, nil,16);

    int r, g, b, a;

    switch (strlen(s)) {

        case2:

            // xx

            r = g = b = value;

            a = 255;

            break;

        case3:

            // RGB

            r = ((value & 0xf00) >>8);

            g = ((value & 0x0f0) >>4);

            b = ((value & 0x00f) >>0);

            r = r * 16 + r;

            g = g * 16 + g;

            b = b * 16 + b;

            a = 255;

            break;

        case6:

            // RRGGBB

            r = (value & 0xff0000) >>16;

            g = (value & 0x00ff00) >> 8;

            b = (value & 0x0000ff) >> 0;

            a = 255;

            break;

        default:

            // RRGGBBAA

            r = (value & 0xff000000) >>24;

            g = (value & 0x00ff0000) >>16;

            b = (value & 0x0000ff00) >> 8;

            a = (value & 0x000000ff) >> 0;

            break;

    }

    return [UIColorcolorWithRed:r/255.0fgreen:g/255.0fblue:b/255.0falpha:a/255.0f];

}

0 0
原创粉丝点击