获得objective-c中的颜色分量

时间:2012-02-21 19:22:09

标签: objective-c components uicolor

以下是获取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];

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