美文网首页
iOS开发 • 实例——实现UIColor RGB数值轻松转换

iOS开发 • 实例——实现UIColor RGB数值轻松转换

作者: 行走的苹果哥 | 来源:发表于2016-12-08 09:59 被阅读349次

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

    第一种,在这种应用工具网站进行转换 第二种,如果用到故事板或者xib,可以把直接把RGB值copy进去,直接转换

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

    第一步 第二步 第三步

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

    根据无符号的32位整数转换成对应的rgb颜色,0xFF0000

         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开发者有帮助,本人技术水平还有很多不足,也希望大神指教,共同进步。

    相关文章

      网友评论

          本文标题:iOS开发 • 实例——实现UIColor RGB数值轻松转换

          本文链接:https://www.haomeiwen.com/subject/kozdmttx.html