Reputation: 175
I am using 2 variations of the same color, a light and dark version, to create a gradient.
Code:
CAGradientLayer *gradient = [CAGradientLayer layer];
UIColor *light = [baseColor lightVersion];
UIColor *dark = [baseColor darkVersion];
gradient.colors = [NSArray arrayWithObjects:(id)[light CGColor], (id)[dark CGColor], nil];
The problem is, I noticed that the CGColor
version of the original UIColor
version is different. Why is that? What is the difference between the UIColor
and CGColor
and why are they different?
Upvotes: 16
Views: 8144
Reputation: 6342
UIColor
inherits from NSObject
and is associated with UIKit Framework
while CGColor
is associated with CoreGraphics
and CGColor
is derived from CFType
.
So if you are using UIKit elements then you can use UIColor
, But if you are using drawing using Core Graphics or working with CALayer
you must use CGColor
.
As per Documentation of UIColor
Many methods in UIKit require you to specify color data using a UIColor object, and for general color needs it should be your main way of specifying colors. The color spaces used by this object are optimized for use on iOS-based devices and are therefore appropriate for most drawing needs. If you prefer to use Core Graphics colors and color spaces instead, however, you may do so.
Upvotes: 25
Reputation: 3588
After reading your question, I tried a sample project in which I took a label with a background color having RGB values (100,100,100). And set its border color to same RGB values but it is CGColor but I found no difference in them. Refer attached image. Border width is 5 pixels.
Upvotes: 1
Reputation: 15213
UIColor
is just an Objective-C object wrapper of the C object CGColor
. There should be no difference.
Upvotes: 0