2013-11-22 14 views
13

Ich verwende 2 Variationen der gleichen Farbe, eine helle und dunkle Version, um einen Farbverlauf zu erstellen.iOS CGColor versus UIColor

Code:

CAGradientLayer *gradient = [CAGradientLayer layer]; 

UIColor *light = [baseColor lightVersion]; 

UIColor *dark = [baseColor darkVersion]; 

gradient.colors = [NSArray arrayWithObjects:(id)[light CGColor], (id)[dark CGColor], nil]; 

Das Problem ist, bemerkte ich, dass die CGColor Version der ursprünglichen UIColor Version unterscheidet. Warum das? Was ist der Unterschied zwischen UIColor und CGColor und warum unterscheiden sie sich?

+0

Vielleicht ein Problem mit der Gammakorrektur. –

Antwort

0

UIColor ist nur ein Objective-C Objekt-Wrapper des C Objekt CGColor. Es sollte keinen Unterschied geben.

-20

Es gibt keinen Unterschied zwischen UIColour und CGColour.

+2

Das ist lächerlich. –

1

Nachdem ich Ihre Frage gelesen hatte, probierte ich ein Beispielprojekt, in dem ich ein Etikett mit einer Hintergrundfarbe mit RGB-Werten (100,100,100) nahm. Und setze seine Rahmenfarbe auf dieselben RGB-Werte, aber es ist CGColor, aber ich habe keinen Unterschied in ihnen gefunden. Siehe angehängtes Bild. Die Rahmenbreite beträgt 5 Pixel. Label with same background color and border color

20

UIColor ist Inherits von NSObject und assoziiert mit UIKit Framework während CGColor mit CoreGraphics zugeordnet ist und CGColor aus CFType abgeleitet.

Also, wenn Sie UIKit Elemente verwenden, dann können Sie UIColor verwenden, aber wenn Sie mit Core Graphics Zeichnung mit oder die Arbeit mit CALayer müssen Sie CGColor verwenden.

Per Dokumentation von UIColor

Viele Methoden in UIKit benötigen Sie Farbdaten zu erhalten, eine UIColor Objekt verwendet, und für die allgemeine Farbe benötigt, sollte es Ihre Hauptweg spezifizieren Farben sein. Die von diesem Objekt verwendeten Farbräume sind , die für die Verwendung auf iOS-basierten Geräten optimiert sind und daher für die meisten Zeichnungsanforderungen geeignet sind . Wenn Sie jedoch lieber Core Graphics-Farben und Farbräume verwenden möchten, können Sie dies tun.

Verwandte Themen