iOS UI开发的过程会遇到使用Hex Color创建UIColor,例如创建颜色为 R:60 G:180 B:174 的UIColor,使用UIColor的api可以使用如下的方式:

[UIColor colorWithRed:51/255.0f green:167/255.0f blue:158/255.0f alpha:1];

上述UIColor的十六进制的表示为0x3CB4AE, 使用0xFF来表示alpha值,使用ARGB的形式拼合成0xFF3CB4AE, 那么可以使用如下方式创建UIColor:

[UIColor colorWithHex:0xFF3CB4AE]

实现方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
+ (UIColor *)colorWithHex:(uint)hex {
int red, green, blue, alpha;

blue = hex & 0x000000FF;
green = ((hex & 0x0000FF00) >> 8);
red = ((hex & 0x00FF0000) >> 16);
alpha = ((hex & 0xFF000000) >> 24);

return [UIColor colorWithRed:red/255.0f
green:green/255.0f
blue:blue/255.0f
alpha:alpha/255.f];
}

如果把alpha值独立出来, 实现方式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
+ (UIColor *)colorWithHex:(uint)hex andAlpha:(CGFloat)alpha
{
int red, green, blue;

blue = hex & 0x000000FF;
green = ((hex & 0x0000FF00) >> 8);
red = ((hex & 0x00FF0000) >> 16);

return [UIColor colorWithRed:red/255.0f
green:green/255.0f
blue:blue/255.0f
alpha:alpha];
}