让UIColor支持Hex值

在使用Cocoa的地方,有个很奇怪问题。为什么每次实例化一个UIColor的时候非要分别指定RGBA四个值,而且每个值都需要除以255.0f。作为前端出生的我太不适应了。公司产品的界面自定义太多了,需要用到特殊颜色的地方也很多。一个颜色值从Photoshop吸取出来后,需要复制四个值。n个颜色也就需要复制4n次。每次都要我这么搞,这也太坑爹了吧。

那有没有办法让UIColor和网页中的CSS那样使用Hex(十六进制值)来指定呢?我写了个UIColor的Category解决了这个问题。

使用起来可以直接这样:

Using UIColor With Hex
1
2
3
4
[UIColor colorWithHex:0x3d5d6d alpha:0.6];
[UIColor colorWithHex:0x3d5d6d];
[UIColor whiteColorWithAlpha:0.6];
[UIColor blackColorWithAlpha:0.9];

如果不想使用Category,可以直接使用下面的代码:

UIColorFromRGB
1
2
3
4
#define UIColorFromRGB(rgbValue) [UIColor \
    colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
    green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
    blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]