iOS中默认的很多方法可以获得不同种颜色的UIColor对象,但是White和Black等灰度值其实是用灰阶透明度调制
+colorWithWhite:alpha:
,这些CGColorRef拥有2个组成成分,剩下的还有4个组成成分(RGBA)的颜色,例如:红,黄和紫色。
// 获取颜色的组成个数
size_t totalComponents = CGColorGetNumberOfComponents(origin.CGColor);
// 判断颜色是否属于灰阶
BOOL isGreyscale = (totalComponents == 2)?YES:NO;
// 获取颜色的组成色值
CGFloat const * oldColorComphonents = CGColorGetComponents(origin.CGColor);
// 新生成色值的容器
CGFloat newComphonents[4];