UIColor详解

司徒兴德
2023-12-01

继承自:UIResponder : NSObject
遵 循:NSCoding,NSSecureCoding

NSObject (NSObject)

框 架:/System/Library/Frameworks/UIKit.framework
可用平台:iPhone OS 2.0 或者更新

UIColor对象可以表示一个颜色或者不透明的颜色(alpha值)。你可以用UIColor对象存储颜色数据,并在绘画过程中来设置当前的填充和画笔颜色。在UIKit中的许多方法需要你用UIColor对象来指定颜色数据,并且是你用来设置颜色的主要方法。用这个对象定义的颜色可以使基于iOS平台显示出最好的效果因此他适用于多数的绘图需要。如果你使用Core Graphics和颜色控件来定义,事实上差不多。

许多开发者不需要UIColor的子类。这只用在你需要有一些特别的颜色控件和颜色模型的时候使用。


        定位文件:UIColor.h


颜色对象是不可变的,所以你可以在多个线程的应用程序中安全的使用他们。


1.创建颜色的快捷方法(使用事先创建的组件值创建UIColor对象):

例:

UIColor *white1 = [UIColor whiteColor]; // 白色
UIColor.h为你准备了更多选择:

+ (UIColor *)blackColor;      // 0.0 white 
+ (UIColor *)darkGrayColor;   // 0.333 white 
+ (UIColor *)lightGrayColor;  // 0.667 white 
+ (UIColor *)whiteColor;      // 1.0 white 
+ (UIColor *)grayColor;       // 0.5 white 
+ (UIColor *)redColor;        // 1.0, 0.0, 0.0 RGB 
+ (UIColor *)greenColor;      // 0.0, 1.0, 0.0 RGB 
+ (UIColor *)blueColor;       // 0.0, 0.0, 1.0 RGB 
+ (UIColor *)cyanColor;       // 0.0, 1.0, 1.0 RGB 
+ (UIColor *)yellowColor;     // 1.0, 1.0, 0.0 RGB 
+ (UIColor *)magentaColor;    // 1.0, 0.0, 1.0 RGB 
+ (UIColor *)orangeColor;     // 1.0, 0.5, 0.0 RGB 
+ (UIColor *)purpleColor;     // 0.5, 0.0, 0.5 RGB 
+ (UIColor *)brownColor;      // 0.6, 0.4, 0.2 RGB 
+ (UIColor *)clearColor;      // 0.0 white, 0.0 alpha 

2.根据组件值创建UIColor对象( 创建 自动释放 的颜色 的简便方法):

创建并返回一个指定的不透明的灰度值的对象:

+ (UIColor *)colorWithWhite:(CGFloat)white alpha:(CGFloat)alpha
参数:

white:颜色的灰度值,从0.0道1.0。

alpha:颜色的透明值,从0.0道1.0。

返回值:一个颜色对象。颜色信息表现为它在设备中的灰度颜色控件信息。

讨论:值小于0.0表现为0.0,如果大于1.0表示1.0

可用平台:iOS2.0或以上。

同类参考:-initWithWhite:alpha:



创建并返回一个颜色对象,使用指定的不透明的HSB颜色空间空间中的值:

+ (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha;

参数:

hue:HSB颜色空间中的色调组件颜色对象。可定义的值从0.0到1.0。

saturation:HSB颜色空间中的饱和度组件颜色对象。可定义的值从0.0到1.0。

brightness:HSB颜色空间中的亮度组件颜色对象。可定义的值从0.0到1.0。

alpha:颜色对象中的透明度,可以定的值从0.0到1.0。

返回值:颜色对象,这些颜色对象信息引用自系统RGB颜色空间。

讨论:值小于0.0表现为0.0,如果大于1.0表示1.0。HSB模式中,H(hues)表示色相,S(saturation)表示饱和度,B(brightness)表示亮度。 HSB模式对应的媒介是人眼。

可用平台:iOS2.0或以上。

同类参考:– initWithHue:saturation:brightness:alpha:


创建并返回指定的基于RGB的颜色对象:

+ (UIColor *)colorWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;

参数:

red:颜色对象中的红色通道。可定义的值从0.0到1.0。

green:颜色对象中的绿色通道。可定义的值从0.0到1.0。

blue:颜色对象中的蓝色通道。可定义的值从0.0到1.0。

alpha:颜色对象中的透明度,可以定的值从0.0到1.0。

返回值:一个颜色对象,颜色的信息引用自这个对象在设备中的RGB颜色信道信息。

讨论:值小于0.0表现为0.0,如果大于1.0表示1.0

可用平台:iOS2.0或以上。

同类参考:– initWithRed:green:blue:alpha:


创建并返回颜色对象使用指定的Quartz颜色引用:

+ (UIColor *)colorWithCGColor:(CGColorRef)cgColor;

参数:

cgColor一个引用的Quartz颜色对象。

返回值:一个颜色对象,颜色信息引用自本地的Quartz颜色空间。

讨论:值小于0.0表现为0.0,如果大于1.0表示1.0

可用平台:iOS2.0或以上。

同类参考:– initWithCGColor:


根据指定的图片返回颜色对象(能使图片重复平铺,但是会占用大量内存):

+ (UIColor *)colorWithPatternImage:(UIImage *)image;

参数:

image当创建图案颜色时使用的图片。

返回值:一个图案颜色。

讨论:你可以使用图案颜色来设置填充和笔刷的颜色。在绘图时,图案的颜色将会平铺在需要复盖的区域。默认的时候返回的颜色是0, 因为图片的左上角需要和绘图原点对齐。要改变协同问题,你可以把你当前的颜色使用 CGContextSetPatternPhase 方法来改变相位。

可用平台:iOS2.0或以上。

同类参考:– initWithPatternImage:



根据CIColor对象返回颜色对象:

+ (UIColor *)colorWithCIColor:(CIColor *)ciColor NS_AVAILABLE_IOS(5_0);



3.初始化UIColor对象(非自动释放):

初始化并使用指定灰度和透明值的颜色对象:

- (UIColor *)initWithWhite:(CGFloat)white alpha:(CGFloat)alpha;

初始化并返回颜色对象使用不透明的HSB颜色空间信道值:

- (UIColor *)initWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha;

初始化并返回使用指定的透明和RGB颜色值的颜色对象:

- (UIColor *)initWithRed:(CGFloat)red green:(CGFloat)green blue:(CGFloat)blue alpha:(CGFloat)alpha;

初始并返回一个颜色对象使用指定的Quartz颜色引用

- (UIColor *)initWithCGColor:(CGColorRef)cgColor;

初始化并根据指定的图片返回颜色对象(能使图片重复平铺):

- (UIColor *)initWithPatternImage:(UIImage*)image;

初始化根据CIColor对象返回颜色对象:

- (UIColor *)initWithCIColor:(CIColor *)ciColor NS_AVAILABLE_IOS(5_0);


4.绘图方法

接收者的画笔和填充的颜色集合:

- (void)set;

讨论:如果你生成了UIColor的子类,那你必须重写这个方法。你自定义的实现必须修改当前图行的画笔和填充颜色,当接收者调用的时候。

可用平台:iOS2.0或以上。


接收者填充颜色的集合:

- (void)setFill;

讨论:如果你继承了UIColor,你必须重写这个方法。你自定义的方法需要在当前图形内容中编辑填充颜色。

可用平台:iOS2.0或以上。


接收者画笔颜色集合:

- (void)setStroke

讨论:如果你继承了UIColor,你必须重写这个方法。你自定义的方法需要在当前图形内容中编辑画笔颜色。

可用平台:iOS2.0或以上。


5.创建一个和接收者相同的颜色对象并拥有相同的颜色空间和信道信息,但是指定了不同的透明信道(返回相同的颜色空间的颜色与指定的alpha要素):

- (UIColor *)colorWithAlphaComponent:(CGFloat)alpha;
讨论:一个拥有不透明信道的子类需要重写这个方法来返回指定了透明值的颜色对象。


6.颜色检索

返回色彩在HSB颜色空间的分量:

- (BOOL)getHue:(CGFloat *)hue
    saturation:(CGFloat *)saturation
    brightness:(CGFloat *)brightness
         alpha:(CGFloat *)alpha
返回构成颜色的RGB颜色空间的分量:

- (BOOL)getRed:(CGFloat *)red
         green:(CGFloat *)green
          blue:(CGFloat *)blue
         alpha:(CGFloat *)alpha

返回该颜色的灰度分量:

- (BOOL)getWhite:(CGFloat *)white
           alpha:(CGFloat *)alpha





 类似资料: