iOS CGColor 与 UIColor
Posted
技术标签:
【中文标题】iOS CGColor 与 UIColor【英文标题】:iOS CGColor versus UIColor 【发布时间】:2013-11-22 08:49:47 【问题描述】:我正在使用相同颜色的 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
有什么区别,为什么不一样?
【问题讨论】:
可能是一些伽马校正问题。 【参考方案1】:UIColor
继承自 NSObject
并与 UIKit Framework
关联,而 CGColor
与 CoreGraphics
关联,CGColor
派生自 CFType
。
因此,如果您使用 UIKit 元素,则可以使用 UIColor
,但如果您使用 Core Graphics 绘图或使用 CALayer
,则必须使用 CGColor
。
根据UIColor的文档
UIKit 中的许多方法要求您使用 UIColor 对象,对于一般的颜色需求,它应该是你的主要方式 的指定颜色。该对象使用的色彩空间是 为在基于 ios 的设备上使用而优化,因此适用 满足大多数绘图需求。 如果您更喜欢使用 Core Graphics 颜色和 但是,您可以这样做。
【讨论】:
【参考方案2】:在阅读了您的问题后,我尝试了一个示例项目,在该项目中我使用了具有 RGB 值 (100,100,100) 的背景颜色的标签。并将其边框颜色设置为相同的 RGB 值,但它是 CGColor 但我发现它们没有区别。参考附图。边框宽度为 5 像素。
【讨论】:
【参考方案3】:UIColor
只是 C 对象CGColor
的一个 Objective-C 对象包装器。应该没有区别。
【讨论】:
【参考方案4】:UIColour 和 CGColour 之间没有区别。
【讨论】:
这太荒谬了。以上是关于iOS CGColor 与 UIColor的主要内容,如果未能解决你的问题,请参考以下文章
iOS开发UIColor,CGColor,CIColor三者的区别和联系