在實際開發中,我們拿到的設計圖上的顏色往往標註的是十六進位制的,而在不新增第三方庫的情況下 UIColor 並不支援從十六進位制數字初始化,手動將十六進位制顏色轉化為 RGB 形式十分浪費精力,我們可以通過為 UIColor 新增擴充套件的方式來支援直接從十六進位制數值初始化從而為我們的開發帶來便利。
1.新增檔案
在專案中新增一個用於編寫擴充套件程式碼的檔案,將其命名為 UIColor+valueRGB.swift
。
2.新增擴充套件程式碼
在第一步建立的檔案中新增如下程式碼:
import UIKit
extension UIColor {
//用數值初始化顏色,便於生成設計圖上標明的十六進位制顏色
convenience init(valueRGB: UInt, alpha: CGFloat = 1.0) {
self.init(
red: CGFloat((valueRGB & 0xFF0000) >> 16) / 255.0,
green: CGFloat((valueRGB & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(valueRGB & 0x0000FF) / 255.0,
alpha: alpha
)
}
}
複製程式碼
3.呼叫
然後我們就可以在工程中以如下方式直接從十六進位制數字初始化 UIColor 了:
let testColor = UIColor(valueRGB: 0x666666, alpha: 1.0)
複製程式碼
實際上這裡沒有做十六進位制的限定,只需要是 UInt 型別都可以,但是貌似暫時沒發現什麼實際意義,用來生成隨機顏色?或者是畫顏色表?大家可以自行挖掘下,?
以上。
如有任何智慧財產權、版權問題或理論錯誤,還請指正。
https://juejin.im/post/5a32145151882526151a9d12
轉載請註明原作者及以上資訊。