iOS CGColor与UIColor

Dan*_*ile 15 objective-c uicolor ios

我使用相同颜色的两种变体,浅色和深色版本来创建渐变.

码:

CAGradientLayer *gradient = [CAGradientLayer layer];

UIColor *light = [baseColor lightVersion];

UIColor *dark = [baseColor darkVersion];

gradient.colors = [NSArray arrayWithObjects:(id)[light CGColor], (id)[dark CGColor], nil];
Run Code Online (Sandbox Code Playgroud)

问题是,我注意到CGColor原始UIColor版本的版本不同.这是为什么?是什么之间的区别UIColorCGColor他们为什么不同?

Nir*_*iya 23

UIColor是从继承NSObject和具有相关联UIKit Framework,而CGColor与之相关联CoreGraphicsCGColor源自CFType.

因此,如果您正在使用UIKit元素,那么您可以使用UIColor,但如果您使用Core Graphics使用绘图或与CALayer您合作必须使用CGColor.

根据UIColor的文档

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


gra*_*ver 0

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