-
常見(jiàn)的幾種表示顏色的方法有:
- ColorName: 直接用顏色的名稱來(lái)指定顏色
- 優(yōu)點(diǎn): 很直觀的表達(dá)想要使用的顏色
- 缺點(diǎn): 顏色的名稱很少, 不能有效表示一些較為豐富的顏色
- RGB: 三通道顏色
- 他是目前運(yùn)用最廣泛的顏色系統(tǒng)之一
- 可以通過(guò)紅綠藍(lán)三色通道, 外加alpha透明度, 來(lái)展示幾乎所有的顏色
- RGB是從顏色的發(fā)光原理來(lái)設(shè)定的, 相當(dāng)于紅綠藍(lán)三個(gè)顏色通過(guò)不同亮度, 來(lái)組合成為需要的顏色
- 0為最暗, 255為最亮
- HEX: 十六進(jìn)制顏色
- 十六進(jìn)制與RGB都可以展示出非常豐富的顏色, 他是通過(guò)16進(jìn)制0~F這16個(gè)字符來(lái)表達(dá)顏色的
- 同樣, 000000為黑色, FFFFFF為白色
- ColorName: 直接用顏色的名稱來(lái)指定顏色
-
RGB轉(zhuǎn)換為HEX
- RGB與HEX中每個(gè)顏色都是一一對(duì)應(yīng)的關(guān)系, 如下面的附表所示
RGB的數(shù)值 = 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轉(zhuǎn)換RGB
- 此轉(zhuǎn)換就是將上述的轉(zhuǎn)換逆轉(zhuǎn)即可
- 示例如下
- 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進(jìn)制轉(zhuǎn)換為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]
-
接下來(lái)說(shuō)一下代碼的意思
- 首先, rgbValue是一個(gè)十六進(jìn)制的參數(shù), 里面需要傳入一個(gè)16進(jìn)制的數(shù)字, 這里需要注意16進(jìn)制的數(shù)字一定要以0x開(kāi)頭, 如
0x4F8ADE -
(rgbValue & 0xFF0000) >> 16, 先做按位與運(yùn)算, 然后按位右移- 將兩個(gè)16進(jìn)制轉(zhuǎn)換為2進(jìn)制的數(shù)字
- 按位與, 兩位只要出現(xiàn)0, 結(jié)果就為0
- 將結(jié)果按位移動(dòng)16位(這里是為了獲取得到的16進(jìn)制的前兩位)
- 將得到移動(dòng)后的2進(jìn)制, 轉(zhuǎn)換為10進(jìn)制, 然后除以255.0, 結(jié)果就是對(duì)應(yīng)的顏色值
- 首先, rgbValue是一個(gè)十六進(jìn)制的參數(shù), 里面需要傳入一個(gè)16進(jìn)制的數(shù)字, 這里需要注意16進(jìn)制的數(shù)字一定要以0x開(kāi)頭, 如
以上就是16進(jìn)制顏色轉(zhuǎn)為2進(jìn)制的步驟, 鼓勵(lì)自己學(xué)習(xí)研究更多~~~