2

如果我直接使用颜色,它会起作用。但是如果我想将颜色值保存在 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?

4

2 回答 2

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 等效项。)

于 2012-12-10T14:27:37.990 回答
-1

您必须初始化浮点数,否则引用 &f、&g、&b 和 &a 没有引用:

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;
于 2012-12-10T14:21:19.780 回答