一樣的色值垃杖,顏色為何不一致?
話說寫UI的時候習(xí)慣了 XIB 和 故事版的拖拽,但是偶爾也會使用代碼構(gòu)建UI的時候找前,一次偶然發(fā)現(xiàn) 代碼給UI控件加的顏色和使用XIB(同StoryBoard )直接設(shè)置的顏色 竟然不一致糟袁,這就讓人困惑。直接用一個顏色測試下吧躺盛。
首先 設(shè)計稿中 UI給出的色值是 #214361
然后我在代碼 設(shè)置顏色和Xib設(shè)置顏色作比較
代碼設(shè)置顏色很簡單
//使用UIColor的 extension 為設(shè)置顏色添加一個類方法
extension UIColor {
static func HexValue(hexValue:Int) -> UIColor {
return UIColor(red:((CGFloat)((hexValue & 0xFF0000) >> 16))/255.0,
green:((CGFloat)((hexValue & 0xFF00) >> 8))/255.0,
blue: ((CGFloat)(hexValue & 0xFF))/255.0,
alpha: 1.0);
}
}
label1.backgroundColor = UIColor.HexValue(hexValue: 0x214361)
//或者也可以直接使用
label1.backgroundColor = UIColor(red:33.0/255.0,
green:67.0/255.0,
blue:97.0/255.0,
alpha:1.0)
使用XIb設(shè)設(shè)置顏色首先最好收藏下某個顏色项戴,
點擊 設(shè)置-->New 新建一個分組
然后回到這里 把色值 214361 copy 進(jìn)去
再次回到Add的頁面,點擊 + 就可以將這個顏色進(jìn)行添加颗品,常用的顏色都可以添加肯尺,Xib使用很方便沃缘,特別是Swift 下 使用
ColorLiter 直接也可以使用在這里收藏的顏色
好了這有點算是跑題了
下面看下 代碼 和 XIB 設(shè)置 顏色后的效果
明顯看出來 左邊和右邊的 顏色不一樣,雖然色值都是都是0x214361(R:33 G:67 B:97)
來 我們使用Mac 自帶的測色計測試下
來自左邊的代碼顏色的截圖
可以看出來在 sRGB 模式下 測色計出來的圖和 實際代碼下設(shè)置的顏色是基本吻合(這個截圖有點不好截)
來自XIB設(shè)置下的截圖
可以看出在Xib設(shè)置下圖片的RGB值在測色計下明顯不一致 為(R:43 G:85 B:116)
同樣都是在 sRGB模式下
問題出在哪里则吟?
其實問題出在在顏色版里邊添加顏色時候的設(shè)置
我們在顏色版里面添加顏色的時候要選擇 sRGB 模式 不要選擇 Generic RGB 或者 Device RGB 的
這樣UI實際給的色值 才會與我們在代碼和XIb中設(shè)置的一致
重新設(shè)置后我們再跑下模擬器
可以使用測試計測試下 都為R:33 G:67 B:97)與我們想要的顏色的初衷一致
總結(jié)一下:
1.Xib設(shè)置顏色比較方便的做法是 自建分組槐臀,添加收藏,隨用隨让ブ佟(提示)
2.Xib添加顏色 在顏色面板下使用 sRGB IEC61966-2.1m模式設(shè)置(重要)
3.使用系統(tǒng)測色計測試的時候也要設(shè)置為sRGB模式(提示)