2013-11-22 54 views
13

我使用2種相同顏色的淺色和深色版本來創建漸變。iOS CGColor與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之間的區別是什麼以及它們爲什麼不同?

+0

也許一些gamma校正問題。 –

回答

0

UIColor只是C對象的一個​​Objective-C對象包裝器CGColor。應該沒有區別。

-20

UIColourCGColour之間沒有區別。

+2

這太可笑了。 –

1

閱讀完您的問題後,我嘗試了一個示例項目,其中我使用背景色爲RGB值(100,100,100)的標籤。並將其邊框顏色設置爲相同的RGB值,但它是CGColor,但我沒有發現它們之間的差異。請參閱附件圖像。邊框寬度是5個像素。 Label with same background color and border color

20

UIColor是從NSObject繼承和與UIKit FrameworkCGColorCoreGraphics相關聯,並且CGColorCFType衍生相關聯。

所以,如果你正在使用的UIKit元素,那麼你可以使用UIColor,但如果您使用的是使用核芯顯卡或工作與CALayer圖紙必須使用CGColor

爲每UIColor

UIKit中許多方法的文檔需要你使用 的UIColor對象指定顏色數據,而對於一般的顏色需要它應該是指定顏色的主要途徑 。該對象使用的顏色空間爲 ,適用於基於iOS的設備,因此適用於大多數繪圖需求的 。 但是,如果您更喜歡使用Core Graphics顏色和 色彩空間,則可以這樣做。