iOS开发 • 实例——实现UIColor RGB数值轻松转换
最近项目暂告一段落,我的空闲时间也比较多,喜欢研究一些小技巧,今天跟大家分享的是实现颜色RGB数值轻松转换。我们做iOS开发的都知道,设计师在给效果图的时候,在图上面标识的色值都是RGB值,那往往都需要我们自己去做一个转换,那我个人以前的做法有两种:


这两种做法,其实效率也不慢,但总觉得差了那么一丢丢。接下来,我就来分享如何可以轻松实现RGB值转换。首先创建一个项目,在项目中创建一个关于颜色的类扩展,如图所示:



紧接着我们在类扩展中创建一个instancetype方法,在这个方法来实现对RGB数值的封装,如图所示:

C语言中有一种双目运算符,按位与,两个都为1,值才为1,其中一个为0,值就为0。假设我们传的RGB值16进制是0xFFAA99,转换为二进制=> 0x 1111 1111 1010 1010 1001 1001,红色、绿色、蓝色的hex值分别为 0xFF0000、0x00AA00、0x000099,16进制转为2进制,如下图所示:

8位为一个字节,int 类型一般表示2个字节,我们传入的是0xFFAA99,按位与之后,
int red = (0xFF0000 & 0xFF0000) >> 16 = 0xFF0000 , 16进制数 FF = 15*16^1+15*16^0 = 255(10进制数);
int green = (0x00AA00 & 0x00FF00) >> 8 = 0x00AA00 , 16进制数 AA = 10*16^1+10*16^0 = 170(10进制数);
int blue = (0x000099 & 0x0000FF) = 0x000099 , 16进制数 99 = 9*16^1+9*16^0 = 153(10进制数);
那么 rgb = (255/255.0,170/255.0,153/255.0),显示的效果如下图所示:


总结:iOS开发中会有很多不同的技巧,自己能够封装一些方法来提升自己的工作效率也是非常有成就感,希望能够对各位iOS开发者有帮助,本人技术水平还有很多不足,也希望大神指教,共同进步。