我正在使用相同颜色的两种变体,即明暗版本,以创建渐变。
代码:
CAGradientLayer *gradient = [CAGradientLayer layer];
UIColor *light = [baseColor lightVersion];
UIColor *dark = [baseColor darkVersion];
gradient.colors = [NSArray arrayWithObjects:(id)[light CGColor], (id)[dark CGColor], nil];
问题是,我注意到原始CGColor
版本的UIColor
版本不同。这是为什么? UIColor
和CGColor
之间有什么区别?为什么它们不同?
答案 0 :(得分:23)
UIColor
是NSObject
的继承,与UIKit Framework
相关联,CGColor
与CoreGraphics
相关联,而CGColor
来自CFType
}}
因此,如果您使用的是UIKit元素,则可以使用UIColor
,但如果您使用Core Graphics使用绘图或使用CALayer
,则必须使用CGColor
。
根据UIColor
的文档UIKit中的许多方法都要求您使用a指定颜色数据 UIColor对象,对于一般的颜色需求,它应该是你的主要方式 指定颜色。此对象使用的颜色空间是 优化用于基于iOS的设备,因此是合适的 对于大多数绘图需求。 如果您更喜欢使用Core Graphics颜色和 但是,您可以这样做。
答案 1 :(得分:1)
在阅读完问题之后,我尝试了一个示例项目,其中我拍摄了一个背景颜色为RGB值(100,100,100)的标签。并将其边框颜色设置为相同的RGB值但它是CGColor但我发现它们没有区别。参考附图。边框宽度为5像素。
答案 2 :(得分:0)
UIColor
只是C对象CGColor
的Objective-C对象包装器。应该没有区别。
答案 3 :(得分:-23)
UIColor 和 CGColor 之间没有区别。