Как конфертировать из шестнадцатеричного значения в UIColor?

У меня есть шестнадцатеричное значение цвета, и я хочу преобразовать его в UIColor. UIColor может принимать значение Hue/Saturation/Brightness (HSB) или значение Red/Blue/Green (RGB). Как я могу использовать шестнадцатеричное значение для создания UIColor?

6 ответов

Поднял это где-то некоторое время назад, он некоторое время сидел в моем макроклавишу для всех моих проектов.

Использовать: view.backgroundColor = UIColorFromRGB(0x2134b6)

//RGB color macro
#define UIColorFromRGB(rgbValue) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

//RGB color macro with alpha
#define UIColorFromRGBWithAlpha(rgbValue,a) [UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0xFF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0xFF))/255.0 alpha:a]

Здесь есть отличная бесплатная библиотека, которая представляет собой просто некоторые дополнения к UIColor (я думаю, это то же самое, что я использую, не помню). Проверьте это, чтобы убедиться, но я думаю, что это то, что вы ищете.

Смотрите ответы на Как я могу создать UIColor из шестнадцатеричной строки?

Основная идея состоит в том, чтобы взять красно-синие зеленые сегменты шестнадцатеричной строки, разделить их на 256, и там у вас есть [0, 1] значения красно-синего зеленого, которые нужны UIColor.

Забудьте значения HSB, вам не нужно делать это преобразование.

Я не уверен, как ваше значение цвета закодировано в шестнадцатеричном значении. Но вот пример со значениями RGB. Допустим, у вас есть HEX-значение, закодированное примерно так: hexRGB = 0xRRGGBB, чтобы присвоить его UIColor, все, что вам нужно сделать, это

[UIColor colorWithRed:(hexRGB & 0xFF0000 >> 16) green:(hexRGB & 0x00FF00 >> 8) blue:(hexRGB & 0x0000FF) alpha:1]

Тот же метод может быть использован при чтении значения HSB из шестнадцатеричного значения, в котором закодировано значение: 0xHHSSBB

Как уже упоминали другие, ваши значения HEX, вероятно, RGB.

Мне нужно было сделать это один раз для метода, который я обнаружил и который подсвечивает кнопки программно. Теория, лежащая в основе HSB (или HSV, как она также известна), очень подробно обсуждается в Википедии. Здесь есть вся математика цветового пространства, поэтому, если вы реализуете свою собственную, это, вероятно, то место, с которого нужно начать.

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

(Но если Эрика Садун написала категорию для предоставления этой функции в UIColor, используйте ее. См. Ответ Джесси Наугера для ссылки.)

Перейдите по этой ссылке. Это дает нам представление о том, как преобразовать шестнадцатеричный код в UIColor и использовать его.

Я попробовал это, и это сработало для меня.

Другие вопросы по тегам