#ffffff
實際上是三種顏色組成的十六進制表示法-紅色。ff
綠ff
藍色ff
..您可以使用SWIFT編寫十六進制表示法0x
前綴,例如0xFF
為了簡化轉換,讓我們創建一個接受整數(0-255)值的初始化器:
extension UIColor {
convenience init(red: Int, green: Int, blue: Int) {
assert(red >= 0 && red <= 255, "Invalid red component")
assert(green >= 0 && green <= 255, "Invalid green component")
assert(blue >= 0 && blue <= 255, "Invalid blue component")
self.init(red: CGFloat(red) / 255.0, green: CGFloat(green) / 255.0, blue: CGFloat(blue) / 255.0, alpha: 1.0)
}
convenience init(rgb: Int) {
self.init(
red: (rgb >> 16) & 0xFF,
green: (rgb >> 8) & 0xFF,
blue: rgb & 0xFF
)
}}
用法:
let color = UIColor(red: 0xFF, green: 0xFF, blue: 0xFF)let color2 = UIColor(rgb: 0xFFFFFF)
怎么得到阿爾法?
根據用例的不同,您可以簡單地使用本機UIColor.withAlphaComponent
方法,如:
let semitransparentBlack = UIColor(rgb: 0x000000).withAlphaComponent(0.5)
也可以向上述方法添加附加(可選)參數:
convenience init(red: Int, green: Int, blue: Int, a: CGFloat = 1.0) {
self.init(
red: CGFloat(red) / 255.0,
green: CGFloat(green) / 255.0,
blue: CGFloat(blue) / 255.0,
alpha: a )}convenience init(rgb: Int, a: CGFloat = 1.0) {
self.init(
red: (rgb >> 16) & 0xFF,
green: (rgb >> 8) & 0xFF,
blue: rgb & 0xFF,
a: a )}
(我們不能命名參數alpha
因為名稱與現有的初始化程序發生沖突)。
稱為:
let color = UIColor(red: 0xFF, green: 0xFF, blue: 0xFF, a: 0.5)let color2 = UIColor(rgb: 0xFFFFFF, a: 0.5)
要將alpha作為整數0-255,我們可以
convenience init(red: Int, green: Int, blue: Int, a: Int = 0xFF) {
self.init(
red: CGFloat(red) / 255.0,
green: CGFloat(green) / 255.0,
blue: CGFloat(blue) / 255.0,
alpha: CGFloat(a) / 255.0
)}// let's suppose alpha is the first component (ARGB)convenience init(argb: Int) {
self.init(
red: (argb >> 16) & 0xFF,
green: (argb >> 8) & 0xFF,
blue: argb & 0xFF,
a: (argb >> 24) & 0xFF
)}
被稱為
let color = UIColor(red: 0xFF, green: 0xFF, blue: 0xFF, a: 0xFF)let color2 = UIColor(argb: 0xFFFFFFFF)
或者是前幾種方法的組合。絕對沒有必要使用字符串。