iOS CGColor与UIColor

iOS CGColor与UIColor,ios,objective-c,uicolor,Ios,Objective C,Uicolor,我使用了两种相同颜色的变体,一种是浅色,另一种是深色,来创建渐变 代码: 问题是,我注意到原始UIColor版本的CGColor版本不同。为什么呢?UIColor和CGColor之间有什么区别?为什么它们不同?UIColor只是C对象CGColor的Objective-C对象包装器。应该没有区别。UICOLOR和CGCOLOR之间没有区别 在阅读了您的问题后,我尝试了一个示例项目,在该项目中,我获取了一个背景颜色为RGB值(100100)的标签。并将其边框颜色设置为相同的RGB值,但它是CGCo

我使用了两种相同颜色的变体,一种是浅色,另一种是深色,来创建渐变

代码:


问题是,我注意到原始
UIColor
版本的
CGColor
版本不同。为什么呢?
UIColor
CGColor
之间有什么区别?为什么它们不同?

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

UICOLOR和CGCOLOR之间没有区别

在阅读了您的问题后,我尝试了一个示例项目,在该项目中,我获取了一个背景颜色为RGB值(100100)的标签。并将其边框颜色设置为相同的RGB值,但它是CGColor,但我发现它们没有区别。请参阅所附图片。边框宽度为5像素。

UIColor
继承自
NSObject
并与
UIKit框架关联,
CGColor
CoreGraphics
关联,
CGColor
派生自
CFType

因此,如果您使用的是UIKit元素,则可以使用
UIColor
,但如果您使用的是使用核心图形的绘图或使用
CALayer
则必须使用
CGColor

根据

UIKit中的许多方法要求您使用 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];