Как конфертировать из шестнадцатеричного значения в UIColor? - PullRequest
2 голосов
/ 24 марта 2011

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

Ответы [ 6 ]

2 голосов
/ 24 марта 2011

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

Для использования: 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]
2 голосов
/ 24 марта 2011

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

1 голос
/ 24 августа 2011

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

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

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

0 голосов
/ 19 августа 2013

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

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

0 голосов
/ 24 марта 2011

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

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

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

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

0 голосов
/ 24 марта 2011

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

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

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

...