[英]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
版本是不同的。 这是为什么? UIColor
和CGColor
有什么区别,为什么又不同?
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对象包装器。 应该没有区别。
UIColour和CGColour之间没有区别。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.