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
版本是不同的。 这是为什么? UIColor
和CGColor
有什么区别,为什么不同?
UIColor
从NSObject
inheritance并与UIKit Framework
相关联,而CGColor
与CoreGraphics
相关联, CGColor
从CFType
派生。
所以,如果您使用的是UIKit元素,那么您可以使用UIColor
,但是如果您使用Core Graphics使用绘图或使用CALayer
,则必须使用CGColor
。
根据UIColor的文档
UIKit中的许多方法要求您使用UIColor对象指定颜色数据,对于一般的颜色需求,它应该是您指定颜色的主要方法。 该对象使用的颜色空间已经过优化,适用于基于iOS的设备,因此适用于大多数绘图需求。 但是,如果您更喜欢使用Core Graphics颜色和颜色空间,则可以这样做。
读完你的问题之后,我尝试了一个示例项目,在该项目中,我采用了具有RGB值(100,100,100)的背景色的标签。 并将其边框颜色设置为相同的RGB值,但它是CGColor,但我发现他们没有区别。 请参阅附件图像。 边框宽度是5个像素。
UIColor
只是C对象CGColor
的Objective-C对象包装器。 应该没有区别。
UIColour和CGColour没有区别。