繁体   English   中英

iOS CGColor与UIColor

[英]iOS CGColor versus UIColor

我正在使用相同颜色的2种变体(浅色和深色版本)来创建渐变。

码:

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版本是不同的。 这是为什么? UIColorCGColor有什么区别,为什么又不同?

UIColor是从NSObject继承并与UIKit Framework关联的,而CGColor是与CoreGraphics关联的,而CGColor是从CFType派生的。

因此,如果使用UIKit元素,则可以使用UIColor ;但是,如果使用Core Graphics进行绘图或与CALayer一起使用,则必须使用CGColor

根据UIColor的文档

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

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

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

UIColourCGColour之间没有区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM