遇到一些获取颜色RGB的需求,在这里记录下
UIColor *color = [UIColor redColor];
// 普通颜色可以通过 这个方法获取的RGBA的值
// 颜色空间是固定的,对应RGBA
const CGFloat *cmp = CGColorGetComponents(fColor.CGColor);
r = cmp[0];
g = cmp[1];
b = cmp[2];
a = cmp[3];
有些颜色是获取不到RGBA的, 比如 [UIColor whiteColor]
[UIColor blackColor]
[UIColor colorWithWhite: alpha:]
这些方法创建的
通过 colorWithRed: green: blue: alpha:
创建的肯定能够获取到RGBA, 所以
可以通过这个方法获取颜色通道数量
unsigned long int fNum = CGColorGetNumberOfComponents(fColor.CGColor);
if (fNum == 4) {
// 在调用上面的方法获取RGBA
}
用这个方法可以获取到
- (void)dc_getRGBComponents:(CGFloat [3])cmp forColor:(UIColor *)color {
CGColorSpaceRef spaceRef = CGColorSpaceCreateDeviceRGB();
unsigned char resultPixel[4];
CGContextRef ctx = C