我有一个项目,我需要将UIColor的RGBA值作为8字符的十六进制字符串存储在数据库中。例如,[UIColor blueColor]将是@“0000FFFF”。 我知道我能得到像这样的元件值:如何将UIColor转换为十六进制字符串?
CGFloat r,g,b,a;
[color getRed:&r green:&g blue: &b alpha: &a];
,但我不知道如何从这些值到十六进制字符串。我已经看到了很多关于如何去其他方式的帖子,但是这种转换没有任何功能。
我有一个项目,我需要将UIColor的RGBA值作为8字符的十六进制字符串存储在数据库中。例如,[UIColor blueColor]将是@“0000FFFF”。 我知道我能得到像这样的元件值:如何将UIColor转换为十六进制字符串?
CGFloat r,g,b,a;
[color getRed:&r green:&g blue: &b alpha: &a];
,但我不知道如何从这些值到十六进制字符串。我已经看到了很多关于如何去其他方式的帖子,但是这种转换没有任何功能。
让您的花车转换为第一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];
在这里不言而喻。返回一个带有十六进制颜色值的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)];
}
用'[UIColor grayColor]'(或任何其他非RGB颜色)尝试此操作。糟糕的结果或可能的崩溃! – rmaddy 2015-01-23 17:31:59
我试过以前的建议,但此实际工作。 – 2012-08-09 13:23:14
方法getRed:绿色:蓝色:alpha:仅适用于iOS 5+。关于iOS 4呢? – VietHung 2013-10-02 07:00:36
可以在这里找到一个反向转换的好方法(比如如果你要从数据库/核心数据存储/加载颜色) - http://stackoverflow.com/a/12397366/553394 – 2014-03-01 01:04:48