Как получить случайный UIColor, но ограничить его набором цветов - PullRequest
5 голосов
/ 08 июля 2011

Я знаю, как получить случайный UIColor, но мне интересно, существует ли способ вернуть цвета только с определенным качеством. Я не знаю, существует ли какой-то конкретный термин, но, например, мне нужно получить только непрозрачные цвета, темные тона ... цвета, подходящие для фона с ярким текстом / изображениями на нем.

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

UPDATE:

Мое решение основано на ответе здесь:

float r = arc4random() % 12; 

return [UIColor colorWithHue:(30*r)/360 saturation:0.5f brightness:0.8f alpha:1.0f];

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

Ответы [ 2 ]

1 голос
/ 08 июля 2011

Я бы использовал цветовое пространство HSV / HSL, а затем преобразовал результаты в RGB.Сохраняйте постоянные значения и насыщенность (S и V), чьи качества вам нравятся, а затем измените значение оттенка (H) для количества цветов, которое вы хотите.Конвертируйте результаты в RGB, и у вас будет хороший набор цветов, которые хорошо сочетаются друг с другом.Вы можете создать любой набор хороших цветов, которые являются «насыщенными», «яркими», «темными» и т. Д., Просто выбирая для своих нужд хорошие комбинации S и V (низкий V - темный, высокий V - яркий, низкий S -ненасыщенный, высокий S насыщенный).

Посмотрите на на этой вики-странице , чтобы обсудить преобразование HSV в RGB.Я бы порекомендовал вам начать с насыщенности (S) на уровне 0,5 и значения (V) на уровне 0,8.Затем, чтобы создать красивые цвета, выполните преобразование HSV -> RGB для значений H от 0, 30, 60, 90 ... вплоть до 360. Это создаст хорошую палитру цветов, которые хорошо смотрятся вместе.Позже вы можете отрегулировать значения S и V, если хотите использовать разные цветовые качества.

1 голос
/ 08 июля 2011

Использование случайного цвета в качестве фона действительно является неоптимальным решением, поскольку оно приведет к проблемам с видимостью и читабельностью текста и информации вашего значка.В настоящее время проводятся некоторые исследования по автоматическому поиску подходящего цвета, соответствующего цветам переднего плана, что приводит к гармоничному результату с точки зрения визуального восприятия изображения.Посмотрите на http://cs.nyu.edu/~sorkine/ProjectPages/Harmonization/

...