UIColor和CIColor他们如何比较,有两个人的目的是什么?

时间:2016-08-11 06:23:20

标签: ios objective-c uicolor

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

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

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

4 个答案:

答案 0 :(得分:4)

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

文档中的差异是:

  

您将CIColor对象与其他Core Image类结合使用,   比如CIFilter,CIContext和CIImage,就可以利用了   处理图像时内置Core Image滤镜。

来自WWDC 2013:

  

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

     

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

     

如果你认为自己需要那个,那么可能不会   正确的策略。

另一种方式,除了我之前已经回答的问题,你可以通过创建黑色UIColor的CGColor来创建CIColor:

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

答案 1 :(得分:3)

医生说

  

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

因此,您需要从CIColor

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

来自UIColor框架CIColor的{​​{1}}和UIColor之间的差异,并在 iOS 中使用。来自Doc UIKit

  

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

来自Available in iOS 2.0 and later框架的

CIColor并在 Mac OSX中使用 CoreImage

  

CIColor类包含颜色值和颜色空间   颜色值有效。您可以结合使用CIColor对象   与其他Core Image类,如CIFilter,CIContext和   CIImage,利用内置的Core Image过滤器   处理图像。

答案 2 :(得分:0)

试试这个(快速版)

tsconfig.json

obj:

tsconfig.json

答案 3 :(得分:0)

UIImage上CIColor 属性的文档说:

  

如果未使用核心图像颜色初始化颜色对象,则此属性将引发异常。

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

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

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