iOS CGColor versus UIColor
ios, objective-c, uicolor
Solution
`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.
Problem
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?