以下是获取RGB颜色分量的代码片段。如果_countComponents小于4,例如两个,我该怎么办?我试图获得颜色为灰色的组件[UIColor grayColor]
int _countComponents = CGColorGetNumberOfComponents(colorRef);
if (_countComponents == 4) {
const CGFloat *_components = CGColorGetComponents(colorRef);
CGFloat red = _components[0];
CGFloat green = _components[1];
CGFloat blue = _components[2];
CGFloat alpha = _components[3];
答案 0 :(得分:5)
如果你有一个UIColor实例并且你想要它的RGB值,为什么不使用-getRed:green:blue:alpha:
方法?
CGFloat r, g, b, a;
BOOL success = [myColor getRed:&r green:&g blue:&b alpha:&a];
if (success) {
// the color was converted to RGB successfully, go ahead and use r,g,b, and a.
}
答案 1 :(得分:1)
颜色的组件取决于关联的color space。
所以_components[0]
,_components[1]
等不一定是红色,绿色和alpha。
答案 2 :(得分:1)
新答案
重新阅读问题后。要回答灰色组件问题,你的阅读方式是通过 - (BOOL)getWhite:alpha:
所以你会像Caleb一样做:
BOOL success = [myColor getWhite:&w alpha:&a];
这为您提供灰色值w
为0到1,alpha值为a
为0到1
请参阅Apple文档getWhite:alpha:
旧答案
从这个问题how-to-access-the-color-components-of-an-uicolor
参见(相当古老的)ArsTechnica artical iphone-development-accessing-uicolor-components