CGColorComponents为UIColor whiteColor返回黑色(0,0,0)

时间:2013-12-08 01:52:00

标签: objective-c core-graphics quartz-core

如果我运行以下代码:

CGColorRef cgcolor = [[UIColor whiteColor] CGColor];

int numComponents = CGColorGetNumberOfComponents(cgcolor);

CGFloat red = 0, green = 0, blue = 0;

if (numComponents >= 3)
{
    const CGFloat *components = CGColorGetComponents(cgcolor);
    red = components[0];
    green = components[1];
    blue = components[2];
}

红色,绿色和蓝色的NSLog每个返回0;但是,如果我给它任何其他颜色,它会显示我想要显示的颜色。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

白色和黑色等颜色使用单色空间(黑/白,alpha)表示,而不是(红,绿,蓝)。 NSLog的{​​{1}}会返回numComponents,因此您的2块永远不会被执行。