【问题标题】:UIColor and CIColor how do they compare and what is the purpose of having two of them?UIColor 和 CIColor 它们如何比较?拥有它们两个的目的是什么?
【发布时间】:2016-08-11 06:23:20
【问题描述】:

最近我遇到了一些尝试获取 UIColor 的 CIColor 属性失败的代码。 UIColor 被初始化为一个简单的 [UIColor blackColor] 并试图获取引发异常的 CIColor。

CIColor *aCIColor = [[UIColor blackColor] CIColor]; //fails

CIColor 和 UIColor 有什么区别,为什么会这样?

【问题讨论】:

    标签: ios objective-c uicolor


    【解决方案1】:

    CIColor 与 UIColor 一样,用于表示颜色的通道尺寸。

    文档中的区别在于:

    您将 CIColor 对象与其他 Core Image 类一起使用, 例如 CIFilter、CIContext 和 CIImage,以利用 处理图像时内置核心图像过滤器。

    来自 WWDC 2013:

    所以,因为,你知道,而且 CIColor 不处理色彩空间,它 不会做 CMYK 颜色,也不会做图案。

    所以,这些都是你将失去的东西。

    如果您认为您将需要它,那么可能不需要 正确的策略。

    除了我之前已经回答过的方法之外,您可以通过创建黑色 UIColor 的 CGColor 来创建 CIColor,例如:

    CIColor *color = [CIColor colorWithCGColor:[[UIColor blackColor] CGColor]];
    

    【讨论】:

      【解决方案2】:

      医生说

      使用 AppKit 颜色对象初始化 Core Image 颜色对象。

      所以你需要从NSColor类创建CIColor

      CIColor *aCIColor = [[CIColor alloc] initWithColor:[NSColor blackColor]];
      

      UIColorCIColor 之间的差异 UIColor 来自 UIKit 框架并在 iOS 中使用。来自文档Available in iOS 2.0 and later

      UIColor 对象表示颜色,有时表示不透明度(alpha 值)。 您可以使用 UIColor 对象来存储颜色数据,并在绘图期间 您可以使用它们来设置当前的填充和描边颜色

      CIColor 来自 CoreImage 框架并在 Mac OSX 中使用 Available in OS X v10.4 and later

      CIColor 类包含颜色值和颜色空间 颜色值有效。结合使用 CIColor 对象 与其他核心图像类,例如 CIFilter、CIContext 和 CIImage,利用内置的核心图像过滤器时 处理图像。

      【讨论】:

        【解决方案3】:

        UIImage 上CIColor property 的文档说:

        如果颜色对象未使用 Core Image 颜色初始化,则此属性会引发异常。

        因此,如果您想访问 UIColor 的 CIColor,首先需要从 CIColor 创建它。

        另一方面,您可以使用 initWithColor: 初始化程序从任何 UIColor 创建一个新的 CIColor:

        CIColor *color = [[CIColor alloc] initWithColor:UIColor.blackColor];
        

        【讨论】:

          【解决方案4】:

          试试这个(快速版本)

           var clcor = CIColor(color: UIColor.redColor())
          

          对象:

          CIColor *aCIColor = [[CIColor alloc] initWithColor:[NSColor blackColor]];
          

          【讨论】:

            猜你喜欢
            • 2012-06-04
            • 1970-01-01
            • 2022-08-13
            • 1970-01-01
            • 2017-11-22
            • 2016-10-24
            • 1970-01-01
            • 1970-01-01
            • 2016-08-29
            相关资源
            最近更新 更多