-
常见的几种表示颜色的方法有:
- ColorName: 直接用颜色的名称来指定颜色
- 优点: 很直观的表达想要使用的颜色
- 缺点: 颜色的名称很少, 不能有效表示一些较为丰富的颜色
- RGB: 三通道颜色
- 他是目前运用最广泛的颜色系统之一
- 可以通过红绿蓝三色通道, 外加alpha透明度, 来展示几乎所有的颜色
- RGB是从颜色的发光原理来设定的, 相当于红绿蓝三个颜色通过不同亮度, 来组合成为需要的颜色
- 0为最暗, 255为最亮
- HEX: 十六进制颜色
- 十六进制与RGB都可以展示出非常丰富的颜色, 他是通过16进制0~F这16个字符来表达颜色的
- 同样, 000000为黑色, FFFFFF为白色
- ColorName: 直接用颜色的名称来指定颜色
-
RGB转换为HEX
- RGB与HEX中每个颜色都是一一对应的关系, 如下面的附表所示
RGB的数值 = 16 * HEX的第一位 + HEX的第二位
- 示例如下:
- RGB: 92, 184, 232
- 92 / 16 = 5余12 -> 5C
- 184 / 16 = 11余8 -> B8
- 232 / 16 = 14余8 -> E8
- HEX = 5CB8E8
- RGB: 92, 184, 232
-
HEX转换RGB
- 此转换就是将上述的转换逆转即可
- 示例如下
- HEX: F26BC1
- F2 = 15和2 -> 15 * 16 + 2 = 242
- 6B = 6和11 -> 6 * 16 + 11 = 107
- C1 = 12和1 -> 12 * 16 + 1 = 193
- HEX: F26BC1
-
OC代码, 16进制转换为RGB形式的UIColor
- 首先, 代码如下
#define UIColorFromRGB(rgbValue) \
[UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16)) / 255.0 \
green:((float)((rgbValue & 0x00FF00) >> 8)) / 255.0 \
blue:((float)((rgbValue & 0x0000FF) >> 0)) / 255.0 \
alpha: 1.0]
-
接下来说一下代码的意思
- 首先, rgbValue是一个十六进制的参数, 里面需要传入一个16进制的数字, 这里需要注意16进制的数字一定要以0x开头, 如
0x4F8ADE
-
(rgbValue & 0xFF0000) >> 16
, 先做按位与运算, 然后按位右移- 将两个16进制转换为2进制的数字
- 按位与, 两位只要出现0, 结果就为0
- 将结果按位移动16位(这里是为了获取得到的16进制的前两位)
- 将得到移动后的2进制, 转换为10进制, 然后除以255.0, 结果就是对应的颜色值
- 首先, rgbValue是一个十六进制的参数, 里面需要传入一个16进制的数字, 这里需要注意16进制的数字一定要以0x开头, 如
以上就是16进制颜色转为2进制的步骤, 鼓励自己学习研究更多~~~