UIColor不能使用它自己的属性

时间:2012-12-10 14:02:19

标签: objective-c colors

如果我直接使用颜色,它会起作用。但是,如果我想在rgb和alpha中保存颜色值,它就不起作用。它没有任何吸引力。

UIColor *aaa = [UIColor grayColor];
float r,g,b,a;

[aaa getRed:&r green:&g blue:&b alpha:&a];
aaa = [UIColor colorWithRed:r green:g blue:b alpha:a];

CGColorRef col = aaa.CGColor;

如何保存我的rgb?

2 个答案:

答案 0 :(得分:2)

我相信你的问题是grayColor没有使用与getRed:green:blue:alpha:方法兼容的颜色空间定义。您可以通过将rgba值初始化为颜色不可能的值并注意它们不会被调用更改来验证这一点,这与记录的返回行为相匹配。或者,将grayColor替换为明确包含颜色的内容,例如cyanColorgetRed:green:blue:alpha:方法。

这里有一些代码可以证明:

float r = 5.0,g = 6.0,b = 7.0,a = 8.0, w = 3.0, a2 = 4.0;
UIColor *aaa = [UIColor grayColor];
[aaa getRed:&r green:&g blue:&b alpha:&a];
[aaa getWhite:&w alpha:&a2];

(在OS X上有一些方法可以在颜色空间之间进行转换,但我没有看到iOS等价物。)

答案 1 :(得分:-1)

你必须初始化浮点数,否则引用& f,& g,& b,& a reference nothing:

UIColor *aaa = [UIColor grayColor];
float r = 0.0f, g = 0.0f, b = 0.0f, a = 0.0f;

[aaa getRed:&r green:&g blue:&b alpha:&a];
aaa = [UIColor colorWithRed:r green:g blue:b alpha:a];

CGColorRef col = aaa.CGColor;