UIColorからCIColorの変換で少しはまった話
エラー概要
先日iOSアプリの開発中にCIColor
型で黒色の値を取得しようとして次のようなコードを書いた。
let blackColor: CIColor = UIColor.black.ciColor
ビルドしてもエラーがないので、このままRun出来ると思ったらこのエラーでアプリが落ちた。
reason: '*** -CIColor not defined for the UIColor UIExtendedGrayColorSpace 0 1; need to first convert colorspace.'
解決策
上のエラーをググれば案外簡単に出てくる。どうやらUIColor
のciColor
のプロパティは使えないらしいので、CIColor(cgColor: CGColor)
を使う必要がある。
let blackColor: CIColor = CIColor(cgColor: UIColor.black.cgColor)
まとめ
このエラーのやっかいなところはビルドは通るが、Run時に初めて分かるところ。
単にCIColor
を使いたいのであれば
let blackColor: CIColor = CIColor.black
としたほうがよい。