【问题标题】:CGColorComponents return black (0, 0, 0) for UIColor whiteColorCGColorComponents 为 UIColor whiteColor 返回黑色 (0, 0, 0)
【发布时间】:2013-12-08 01:52:00
【问题描述】:

如果我运行以下代码:

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;但是,如果我给它任何其他颜色,它会显示我希望它显示的颜色。

这是为什么?

【问题讨论】:

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


    【解决方案1】:

    白色和黑色等颜色使用单色颜色空间(黑色/白色,alpha)表示,而不是(红色,绿色,蓝色)。 NSLognumComponents 将返回 2,因此您的 if 块永远不会执行。

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 1970-01-01
      • 2016-10-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      相关资源
      最近更新 更多