CIColor转UIColor -> UIColor UIExtendedSRGBColorSpace无法定义CIColor

7

我正在尝试将rgb-hex颜色空间中的CIColor实现如下:

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

然而,我不断地遇到以下错误:

应用程序终止,因为未捕获的异常 'NSInvalidArgumentException',原因:'*** -CIColor 未定义于 UIColor UIExtendedSRGBColorSpace 0.921569 0.980392 1 1;需要先转换颜色空间。'

我不确定这意味着什么。如何解决这个问题?

1个回答

18

这个可以正常工作:

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

我在相关问题中找到了答案和解释。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接