почему UIColor colorWithHue: Sat: Brightness производит цвет с другим оттенком в качестве выходного сигнала? - PullRequest
4 голосов
/ 10 ноября 2011

Почему +[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 ]

5 голосов
/ 10 ноября 2011

Это, вероятно, ближайшее 24-битное значение RGB (которое фактически может отображать аппаратное обеспечение iPhone) к требуемому цвету.

Добавлено: это выглядит ближе к 24-битному квантованному преобразованию HSV из некоторого базового значения RGB. Возможно, вы захотите распечатать как RGB, так и HSV, чтобы узнать, какие из них, если таковые имеются, получили больше квантования.

1 голос
/ 10 ноября 2011

Оттенок / насыщенность / яркость будут преобразованы в значения RGBA и, вероятно, сохранены внутри как CGFloat.Я могу только предположить, что из-за характера преобразования, оттенок очень чувствителен к ошибке квантования в этой области.Если вам нужна более высокая точность, вам, вероятно, придется создать свой собственный тип данных.

1 голос
/ 10 ноября 2011

Ограниченная точность с плавающей точкой.В то время как вы ввели 0.223404, 0.229560 является ближайшим значением, которое может быть представлено 32-разрядным числом с плавающей точкой.

...