Как преобразовать UIColor в шестнадцатеричную строку?
У меня есть проект, где мне нужно хранить значения RGBA UIColor в базе данных в виде 8-символьной шестнадцатеричной строки. Например, [UIColor blueColor] будет @ "0000FFFF".
Я знаю, что могу получить значения компонентов так:
CGFloat r,g,b,a;
[color getRed:&r green:&g blue: &b alpha: &a];
но я не знаю, как перейти от этих значений к шестнадцатеричной строке. Я видел много сообщений о том, как идти в другую сторону, но ничего не работает для этого преобразования.
Ответы
Ответ 1
Сначала сначала преобразуйте ваши поплавки в значения int, а затем отформатируйте с помощью stringWithFormat
:
int r,g,b,a;
r = (int)(255.0 * rFloat);
g = (int)(255.0 * gFloat);
b = (int)(255.0 * bFloat);
a = (int)(255.0 * aFloat);
[NSString stringWithFormat:@"%02x%02x%02x%02x", r, g, b, a];
Ответ 2
Вот так. Возвращает NSString
(например, ffa5678
) с шестнадцатеричным значением цвета.
- (NSString *)hexStringFromColor:(UIColor *)color
{
const CGFloat *components = CGColorGetComponents(color.CGColor);
CGFloat r = components[0];
CGFloat g = components[1];
CGFloat b = components[2];
return [NSString stringWithFormat:@"%02lX%02lX%02lX",
lroundf(r * 255),
lroundf(g * 255),
lroundf(b * 255)];
}