storyboard/xib中設置顏色:
xib中rgb.png
代碼中用UIColor的類方法設置顏色
+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;
或者給UIColor添加個category:
/**
設置顏色
@param hexColorString # 格式 或者 0x 格式
@param alpha 透明度
@return 設置的顏色
*/
+ (UIColor *)colorWithHexString:(NSString *)hexColorString alpha:(CGFloat)alpha {
if ([hexColorString length] < 6) { //長度不合法
return [UIColor blackColor];
}
NSString *tempString = [hexColorString lowercaseString];
if ([tempString hasPrefix:@"0x"]) { //檢查開頭是0x
tempString = [tempString substringFromIndex:2];
} else if ([tempString hasPrefix:@"#"]) { //檢查開頭是#
tempString = [tempString substringFromIndex:1];
}
if ([tempString length] != 6) {
return [UIColor blackColor];
}
//分解三種顏色的值
NSRange range = NSMakeRange(0, 2);
NSString *rString = [tempString substringWithRange:range];
range.location = 2;
NSString *gString = [tempString substringWithRange:range];
range.location = 4;
NSString *bString = [tempString 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:alpha];
}
通過storyboard/xib和代碼設置的顏色色差很大,解決方法如下
方法1:storyboard/xib中直接改成device RGB
devRgb.png
方法2:
如果你的storyboard/xib很多,每個都去改動要用很多時間,用
Xcode-Color-Fixer
但是Xcode-Color-Fixer認為storyboard/xib中RGB的默認設置都是sRGB,我在檢查自己項目時發現有些默認還有generic RGB等,所以一是在腳本中將generic RGB也替換,或者自己多檢查一下~