为什么UIColor colorWithHue:Sat:Brightness产生不同色调的颜色作为输出?

时间:2011-11-09 21:37:20

标签: iphone ios uicolor

为什么+[UIColor colorWithHue:saturation:brightness]会产生不同色调的颜色作为输出?

请参阅下面的示例。色调输入 0.223404 ,但查看所创建颜色的输出 0.229560

测试代码:

UIColor *uic = [UIColor colorWithHue:0.223404 saturation:0.944000 brightness:0.990291 alpha:1.0];
NSLog(@"Color Created:  %f, %f, %f", uic.hue, uic.saturation, uic.brightness);

输出:

Color Created:  0.229560, 0.944000, 0.990291

3 个答案:

答案 0 :(得分:5)

这可能是您所要求颜色的最接近的24位RGB值(这是iPhone硬件实际显示的值)。

补充:这看起来更接近于来自某些基础RGB值的24位量化HSV转换。您可能希望打印RGB和HSV以查看哪些(如果有)更多量化。

答案 1 :(得分:1)

有限的浮点精度。键入0.223404时,0.229560是可以用32位浮点数表示的最接近的值。

答案 2 :(得分:1)

色调/饱和度/亮度将转换为RGBA值,并可能在内部存储为CGFloat。我只能想象由于变换的性质,色调对该区域的量化误差非常敏感。如果您需要更高的准确性,则可能必须创建自己的数据类型。