一、UIColor
UIColor是UIKit中存储颜色信息的一个重要的类,一个UIColor对象包含了颜色和透明度的值,它的颜色空间已经针对IOS进行了优化。UIColor包含了一些类方法用于创建一些最常见的颜色,如白色,黑色,红色,透明色等,这些颜色的色彩空间也不尽相同(白色和黑色是kCGColorSpaceDeviceGray,红色的色彩空间是kCGColorSpaceDeviceRGB)。
两个参数 一个是不透明度 一个是灰度值 返回的是一个颜色对象
两个值都是CGFloat类型 大于1按1算 小于0 按0算
和[[UIColor alloc]initWithWhite:0.33 alpha:1]方法一个道理
self.view.backgroundColor = [UIColor colorWithWhite:0.33 alpha:1];
用HSB和不透明度来返回一个颜色对象
色相(hue)
饱和度(saturation)
亮度(brightness或value)
self.view.backgroundColor = [UIColor colorWithHue:0.5 saturation:0.5 brightness:0.5 alpha:1];
用RGB和不透明度来返回一个颜色对象
self.view.backgroundColor = [UIColor colorWithRed:150/255. green:150/255. blue:150/255. alpha:1];
此外UIColor还有两个重要的属性:一个是CGColor,一个是CIColor(5.0之后添加)。
用CGColor属性返回一个颜色对象
UIColor *color = [UIColor colorWithCGColor:[UIColor whiteColor].CGColor];
二、CGColor
CGColor主要用于CoreGaphics框架之中,CGColor其实是个结构体,而我们通常在使用的CGColor的时候使用的是它的引用类型CGColorRef。CGColor主要由CGColorSapce和Color Components两个部分组成,同样的颜色组成,如果颜色空间不同的话,解析出来的结果可能会有所不同。这就像我们在处理图片数据的时候,如果把RGBA格式当成BGRA格式处理的结果可想而知。在Quartz 2D中CGColor常用来设置context的填充颜色,设置透明度等。
1、如何创建一个CGColor,最常用的函数是CGColorCreate,该函数有两个参数:
1)
colorspace,指定CGColor对应的颜色空间,Quartz就会retain该对象,因此调用完之后你就可以安全的释放该对象。2) components,一个CGFloat的数组,该数组的元素个数是指定色彩空间包含的颜色分量数n,加上对应的alpha值。
该函数该返回一个新创建的CGColorRef,当我们不再使用该对象的时候使用CGColorRelease函数释放该对象。
CGColorSpaceRef cmykSpace = CGColorSpaceCreateDeviceCMYK();
CGFloat cmykValue[] = {1, 1, 0, 0, 1}; // blue
CGColorRef colorCMYK = CGColorCreate(cmykSpace, cmykValue);
CGColorSpaceRelease(cmykSpace);