我试图提取UIColor
的RGB分量,以便在CGBitmapContext
中手动构建像素。以下示例代码适用于大多数UIColor
常量,但令人困惑的是,并非所有都适用。即:
CGColorRef color = [[UIColor yellowColor] CGColor];
const float* rgba = CGColorGetComponents(color);
float r = rgba[0];
float g = rgba[1];
float b = rgba[2];
float a = rgba[3];
NSLog( @"r=%f g=%f b=%f a=%f", r, g, b, a);
以上的[UIColor yellowColor]
结果如下:r=1.000000 g=1.000000 b=0.000000 a=1.000000,与预期相符。
[UIColor redColor]
的结果为
r=1.000000 g=0.000000 b=0.000000 a=1.000000,
与预期一样,blueColor
和greenColor
也是如此。然而,
[UIColor blackColor]
和[UIColor whiteColor]
的结果看起来完全不正常,我不知道我到底做错了什么(如果确实是我的问题)。具体来说,
[UIColor blackColor]
返回:
r=0.000000 g=1.000000 b=0.000000 a=0.000000,
这是一个透明绿色,
[UIColor whiteColor]
返回:
r=1.000000 g=1.000000 b=0.000000 a=0.000000,
这是一个透明黄色。如果有人能够:
(1) 解释我哪里出错了
(2) 重现我的异常结果并告诉我这不是我的问题,或者
(3) 用大锤敲打我的脑袋,让我不再感到疼痛。
谢谢!
霍华德
CGColorGetNumberOfComponents(color)
调用CGColorGetComponents(color)
弄得很困惑。现在我明白了为什么要这样做。顺便问一下,有没有办法打印出上面模型的 名称,而不仅仅是它的值? - hkatz