iOS CGColor与UIColor

我正在使用同一种颜色的两种变体,浅色和深色版本来创build渐变。

码:

CAGradientLayer *gradient = [CAGradientLayer layer]; UIColor *light = [baseColor lightVersion]; UIColor *dark = [baseColor darkVersion]; gradient.colors = [NSArray arrayWithObjects:(id)[light CGColor], (id)[dark CGColor], nil]; 

问题是,我注意到原来的UIColor版本的CGColor版本是不同的。 这是为什么? UIColorCGColor有什么区别,为什么不同?

UIColorNSObjectinheritance并与UIKit Framework相关联,而CGColorCoreGraphics相关联, CGColorCFType派生。

所以,如果您使用的是UIKit元素,那么您可以使用UIColor ,但是如果您使用Core Graphics使用绘图或使用CALayer ,则必须使用CGColor

根据UIColor的文档

UIKit中的许多方法要求您使用UIColor对象指定颜色数据,对于一般的颜色需求,它应该是您指定颜色的主要方法。 该对象使用的颜色空间已经过优化,适用于基于iOS的设备,因此适用于大多数绘图需求。 但是,如果您更喜欢使用Core Graphics颜色和颜色空间,则可以这样做。

读完你的问题之后,我尝试了一个示例项目,在该项目中,我采用了具有RGB值(100,100,100)的背景色的标签。 并将其边框颜色设置为相同的RGB值,但它是CGColor,但我发现他们没有区别。 请参阅附件图像。 边框宽度是5个像素。 标签具有相同的背景颜色和边框颜色

UIColor只是C对象CGColor的Objective-C对象包装器。 应该没有区别。

UIColourCGColour没有区别。