Проблемы с насыщением iPad UIColor - PullRequest
0 голосов
/ 12 июня 2010

Я пытаюсь нарисовать UIColor на экране приложения на основе представления, и я пытаюсь сделать это с помощью HSB.В этом случае мне абсолютно необходимо использовать HSB.Я могу создать объект UIColor с любым значением S от 0,0f до 0,75f, но после этого числовые изменения не влияют на отображаемую фактическую насыщенность.Мне нужно, чтобы он был 1.0f, но он все еще использует 0.75f.Любые идеи о том, почему он это делает, и как я могу заставить его работать?

Ответы [ 2 ]

0 голосов
/ 14 июня 2010

Проведя некоторые эксперименты, я обнаружил, в чем заключается моя проблема.

Я использовал цикл for для рисования однопиксельных линий на виде, каждая из которых имеет значение оттенка больше, чем предыдущее.Я делал это, чтобы создать цветовую гамму для выбора цвета.

Моя проблема возникла из-за того, что я использовал для рисования пути CGContext, а не rects.Пути, по умолчанию, "перекрывают" созданный путь пикселями.Поскольку я устанавливал ширину в единицу, CoreGraphics был вынужден усреднять между пикселями, создавая ненасыщенный эффект.Установка ширины в два правильно установила насыщенность, но градиент спектра больше не был плавным.

Мое исправление для этой проблемы состояло в том, чтобы использовать пути вместо путей.Они не смешивались между пикселями, и проблема с насыщенностью была исправлена.

0 голосов
/ 14 июня 2010

Из-за того, как это работает, + (UIColor *)colorWithHue:(CGFloat)hue saturation:(CGFloat)saturation brightness:(CGFloat)brightness alpha:(CGFloat)alpha фактически не использует значения HSBA для внутреннего использования; это просто оболочка вокруг цветового пространства RGB устройства.

Я думаю, что в экстремальных случаях, безусловно, были бы шансы, что постоянная H / B / A + 0,75–1 S дает цвета, которые настолько мало различаются, что становятся незаметными, несмотря на то, что компоненты цвета отслеживаются в цифровом виде в виде очень точных плавающих элементов , По мере снижения насыщенности количество «доступных» цветов уменьшается (так как на дисплее может отображаться только столько цветов, при уменьшении насыщенности сжимаются используемые цвета), и вероятность столкновения просто возрастает.

Учитывая, что в вашем сценарии используются цвета H0-1, B1, A1, что почти опровергает мое предположение, мне было любопытно, и я сделал тестовый проект; однако цвета работали правильно. Я использую iOS 4 SDK GM, поэтому, возможно, будет полезно, если мы узнаем, с каким SDK вы работаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...