CIColor 到 UIColor -> CIColor 没有为 UIColor UIExtendedSRGBColorSpace 定义

Posted

技术标签:

【中文标题】CIColor 到 UIColor -> CIColor 没有为 UIColor UIExtendedSRGBColorSpace 定义【英文标题】:CIColor to UIColor -> CIColor not defined for the UIColor UIExtendedSRGBColorSpace 【发布时间】:2016-11-26 08:24:34 【问题描述】:

我正在尝试从 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】:

这将起作用:

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的答案和解释。

【讨论】:

以上是关于CIColor 到 UIColor -> CIColor 没有为 UIColor UIExtendedSRGBColorSpace 定义的主要内容,如果未能解决你的问题,请参考以下文章

UIColor

无法在 LLDB 中传递 CGColorRef 类型的参数

在 iOS 7 和 Objective c 中使用 UIColor 类别

将目标c代码添加到swift文件[关闭]

如何在目标 c 中返回对象的 UIColor?

c_cpp 的UIColor + HexColor.h