为什么+[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
答案 0 :(得分:5)
这可能是您所要求颜色的最接近的24位RGB值(这是iPhone硬件实际显示的值)。
补充:这看起来更接近于来自某些基础RGB值的24位量化HSV转换。您可能希望打印RGB和HSV以查看哪些(如果有)更多量化。
答案 1 :(得分:1)
有限的浮点精度。键入0.223404
时,0.229560
是可以用32位浮点数表示的最接近的值。
答案 2 :(得分:1)
色调/饱和度/亮度将转换为RGBA值,并可能在内部存储为CGFloat。我只能想象由于变换的性质,色调对该区域的量化误差非常敏感。如果您需要更高的准确性,则可能必须创建自己的数据类型。