各記事が乱立してるのと、CIColor
経由の記事があまり無いような気がしたので書きました。
他にも方法があれば教えてください。
CIColor 経由で取得
やり方はいくつもありますが、おそらく一番手っ取り早い方法。
let color: UIColor = .red
let ciColor = CIColor(color: color)
ciColor.red // 1.0
ciColor.green // 0.0
ciColor.blue // 0.0
ciColor.alpha // 1.0
CGColor 経由で取得
そんな大きな問題は無いのかもしれないけど、 optional型
という面倒くささと、配列なので fatal error: Index out of range
の恐れがなんとなくある。
let color: UIColor = .red
color.cgColor.components![0]
color.cgColor.components![1]
color.cgColor.components![2]
color.cgColor.components![3]
ポインタ 経由で取得
事前に変数を用意しなければいけないデメリット。
let color: UIColor = .red
var red: CGFloat = 0
var green: CGFloat = 0
var blue: CGFloat = 0
var alpha: CGFloat = 0
color.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
print(red, green, blue, alpha)
環境
- Swift 4.2