2013-11-22 7 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]; 

問題がある、私は、元UIColorバージョンのCGColorバージョンが異なっていることに気づきました。何故ですか? UIColorCGColorの違いは何ですか?なぜ違いはありますか?

+0

ガンマ補正の問題が多分あるかもしれません。 –

答えて

0

UIColorは、CオブジェクトCGColorのObjective-Cオブジェクトラッパーです。違いはありません。

-20

UIColourCGColourの間に違いはありません。

+2

それはばかげている。 –

1

あなたの質問を読んだ後、私はRGB値(100,100,100)を持つ背景色のラベルを取ったサンプルプロジェクトを試しました。また、境界線の色を同じRGB値に設定しますが、CGColorですが、違いはありません。添付の画像を参照してください。枠の幅は5ピクセルです。 Label with same background color and border color

20

UIColorNSObjectから継承し、CoreGraphicsと関連しているとCGColorCFType由来するUIKit FrameworkCGColorながら関連付けられています。

したがって、UIKit要素を使用している場合はUIColorを使用できますが、Core Graphicsを使用している図面を使用している場合やCALayerを使用している場合は、CGColorを使用する必要があります。

UIColor

のドキュメントを1としてUIKitの中の多くの方法が UIColorオブジェクトを使用したカラーデータを指定する必要があり、一般的な色のためにそれが色を指定するあなたの主な方法 べきである必要があります。このオブジェクトで使用される色空間は、iOSベースのデバイスでの使用に最適化された であるため、ほとんどの描画では が適切です。 Core Graphicsの色と の色空間を代わりに使用することをお勧めします。

関連する問題