2016-11-26 557 views
2

我試圖從RGB-六角色彩空間實現CIColor定義如下:CIColor到的UIColor> CIColor不能爲的UIColor UIExtendedSRGBColorSpace

let bottomColor = UIColor.init(red: 235/255, green: 250/255, blue: 255/255, alpha: 1.0).ciColor 

不過,我一直在打以下錯誤:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -CIColor not defined for the UIColor UIExtendedSRGBColorSpace 0.921569 0.980392 1 1; need to first convert colorspace.'

我不確定這是什麼意思。如何解決這個問題?

回答

7

這將工作:

let uiColor = UIColor.init(red: 235.0/255.0, green: 250.0/255.0, blue: 255.0/255.0, alpha: 1.0) 
let bottomColor = CIColor(color: uiColor) 

您還可以的UIColor添加擴展名:

extension UIColor { 
    var coreImageColor: CIColor { 
     return CIColor(color: self) 
    } 
    var components: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) { 
     let color = coreImageColor 
     return (color.red, color.green, color.blue, color.alpha) 
    } 
} 

,然後通過調用它:

let bottomColor = UIColor.init(red: 235.0/255.0, green: 250.0/255.0, blue: 255.0/255.0, alpha: 1.0).coreImageColor 

答案和解釋其我發現in this related question