当我在iOS 10.2.1上运行以下Swift 3.0.1行时:
let color = CIColor(color: UIColor(hue: 0.72, saturation: 1.00, brightness: 0.78, alpha: 1));
我有以下错误:
'*** -cicolor未针对UIColor UiextendedGrayColorspace 1 1;需要先转换Colorspace。'
根据文档:
颜色对象。该对象表示的颜色信息在RGB Colorspace中。在iOS 10或更高版本的应用程序上,在扩展范围SRGB颜色空间中指定了颜色。在iOS的早期版本上,颜色是在设备RGB Colorspace中指定的。
来源:https://developer.apple.com/reference/uikit/uicolor/1621931-init
现在,CIColor
位于设备RGB Colorspace中,并且UIColor
在扩展的SRGB Colorspace中,从此UIColor
获取CIColor
的合适语法是什么?
根据评论中提供的反馈,我找到了错误的来源:
稍后,在方法中,我在uicolor实例上调用了.cicolor。这会失败,因为uicolor实例不是由Cicolor创建的。
看起来以下条件如下:
- uicolor => cicolor:必须由cicolor(颜色:uicolor实例)构造函数初始化
- cicolor => uicolor => cicolor:.cicicolor属性可用。
正如杰克·查桑(Jake Chasan)所建议的,必须使用uicolor实例初始化Cicolor实例。因此,此快速代码对我有用:
func colorToRGB(uiColor: UIColor) -> CIColor
{
return CIColor(color: uiColor)
}