HABIT IS POWSER

HEX to RGB

疑问

CSS下有时候为了偷懒,会把#CCCCCC写成#CCC,这个其实就是自动补齐,CSS下会复制每个C变成CC;

那么同样的逻辑下iOS是什么效果呢?

解答

因为SDK并没有提供HEX参数的UIColor构造函数,所以实际上就是看代码怎么写的

如果按照比较常用的方式是什么样的呢?

How can I create a UIColor from a hex string?

1
2
3
4
5
6
7
8
// Assumes input like "#00FF00" (#RRGGBB).
+ (UIColor *)colorFromHexString:(NSString *)hexString {
unsigned rgbValue = 0;
NSScanner *scanner = [NSScanner scannerWithString:hexString];
[scanner setScanLocation:1]; // bypass '#' character
[scanner scanHexInt:&rgbValue];
return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0];
}

根据这个代码,实际的效果会是这样:

1
#CCC 会被解释成 #000CCC,而不是像CSS中所期望的#CCCCCC

参考文章:

Web colors