UIColorからRGBAの各要素を取り出すには、以下のようにする。
getRed:green:blue:alpha:, getWhite:alpha:の両メソッドがUIColorに追加されたのがiOS 5.0からなので、古いiOSをサポートする場合には要注意。
また、RGBAの各コンポーネントが、カラーの場合と単色の場合とで使用メソッド/関数が異なる為、エラーチェックを実施している。
iOS 5.x以降の場合
getcolor.m
UIColor *color = [UIColor redColor];
CGFloat r, g, b, a;
if (![color getRed:&r green:&g blue:&b alpha:&a]) {
[color getWhite:&r alpha:&a];
g = b = r;
}
iOS 4.x以前の場合
getcolor.m
UIColor *color = [UIColor redColor];
CGFloat r, g, b, a;
const CGFloat *components = CGColorGetComponents(color.CGColor);
if (CGColorGetNumberOfComponents(color.CGColor) == 4) {
r = components[0];
g = components[1];
b = components[2];
a = components[3];
} else {
r = components[0];
g = components[0];
b = components[0];
a = components[1];
}