当我在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定义;需要先转换色彩空间。”


根据文档:


颜色对象。该对象表示的颜色信息位于RGB颜色空间中。在为iOS 10或更高版本链接的应用程序上,在扩展的sRGB色彩空间中指定颜色。在iOS的早期版本中,颜色是在设备RGB色彩空间中指定的。


资料来源:https://developer.apple.com/reference/uikit/uicolor/1621931-init

既然CIColor位于设备RGB颜色空间中并且UIColor位于扩展的sRGB颜色空间中,那么从此CIColor获取UIColor的适当语法是什么?

最佳答案

根据评论中提供的反馈,我找到了错误的根源:

在该方法的后面,我在UIColor的实例上调用了.ciColor。失败是因为UIColor实例不是首先由CIColor创建的。

似乎满足以下条件:


UIColor => CIColor:必须由CIColor(color:UIColor instance)构造函数初始化
CIColor => UIColor => CIColor:.ciColor属性可用。

关于swift - 将UIColor(扩展范围sRGB)转换为CIColor,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42287093/

10-13 02:23