我使用了两种相同颜色的变体,一个亮的和一个暗的版本,来创建一个渐变。
代码:
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之间有什么区别?为什么它们不同?
发布于 2013-11-22 17:09:35
UIColor从NSObject继承并与UIKit Framework关联,而CGColor与CoreGraphics关联,CGColor从CFType派生。
因此,如果你使用UIKit元素,那么你可以使用UIColor,但如果你使用核心图形绘制或使用CALayer,你必须使用CGColor。
根据UIColor的文档
UIKit中的许多方法要求您使用UIColor对象指定颜色数据,对于一般颜色需求,它应该是您指定颜色的主要方式。此对象使用的颜色空间已针对基于iOS的设备进行了优化,因此适用于大多数绘图需求。如果您更喜欢使用核心图形颜色和色彩空间,则可以这样做。
发布于 2013-11-22 17:06:09
在阅读了您的问题之后,我尝试了一个示例项目,在该项目中,我采用了一个背景色为RGB值(100,100,100)的标签。并将它的边框颜色设置为相同的RGB值,但它是CGColor,但我发现它们没有区别。请参阅附件中的图像。边框宽度为5像素。

发布于 2013-11-22 16:52:25
UIColor只是C object CGColor的Objective-C对象包装器。这应该是没有区别的。
https://stackoverflow.com/questions/20140576
复制相似问题