iOS CGColor与UIColor

时间:2013-11-22 08:49:48

标签: ios objective-c uicolor

我正在使用相同颜色的两种变体,即明暗版本,以创建渐变。

代码:

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版本不同。这是为什么? UIColorCGColor之间有什么区别?为什么它们不同?

4 个答案:

答案 0 :(得分:23)

UIColorNSObject的继承,与UIKit Framework相关联,CGColorCoreGraphics相关联,而CGColor来自CFType }}

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

根据UIColor

的文档
  

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

答案 1 :(得分:1)

在阅读完问题之后,我尝试了一个示例项目,其中我拍摄了一个背景颜色为RGB值(100,100,100)的标签。并将其边框颜色设置为相同的RGB值但它是CGColor但我发现它们没有区别。参考附图。边框宽度为5像素。Label with same background color and border color

答案 2 :(得分:0)

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

答案 3 :(得分:-23)

UIColor CGColor 之间没有区别。