Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
496 views
in Technique[技术] by (71.8m points)

objective c - iOS CGColor versus UIColor

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...