- RGB顏色與十六進制顏色轉碼工具中此處的RGB值爲SRGB而非普通RGB
工具地址:http://tool.css-js.com/rgba.html
十六進制與十進制轉換:http://tool.oschina.net/hexconvert/
轉換代碼:
#define CTColorHex(c) [UIColor colorWithRed:((c>>16)&0xFF)/255.0 green:((c>>8)&0xFF)/255.0 blue:((c)&0xFF)/255.0 alpha:1.0]
#define CTColorHexA(c,a) [UIColor colorWithRed:((c>>16)&0xFF)/255.0 green:((c>>8)&0xFF)/255.0 blue:((c)&0xFF)/255.0 alpha:(a)]
CTColorHex(0x006800)
CTColorHexA(0x006800,0.2)
上面的十六進制數先轉換成2進制數再右移
&0xFF的話還等於自己(&運算符 只有1和1與得1 其他都0)
這裏得到十六進制數直接/255.0 轉換成10進制
16進制的00,68,00分別對應2進制的0000,0110 1000,0000
2進制轉換成10進制 01101000 即8+32+64 = 104
所以16進制的68=10進制的104
[UIColor colorWithHexString:@"#666666"];
+ (UIColor *)colorWithHexString:(NSString *)stringToConvert
{
NSString *cString = [[stringToConvert stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
if ([cString length] < 6)
return DEFAULT_VOID_COLOR;
if ([cString hasPrefix:@"#"])
cString = [cString substringFromIndex:1];
if ([cString length] != 6)
return DEFAULT_VOID_COLOR;
NSRange range;
range.location = 0;
range.length = 2;
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f)
green:((float) g / 255.0f)
blue:((float) b / 255.0f)
alpha:1.0f];
}
可以試驗一下,然後對比工具轉換的值,然後用Mac的數碼測色計查看,此RGB值爲以sRGB顯示的。