0

我正在从网上下载十六进制颜色,当我尝试将其转换为 RGB 时,它不起作用。

我正在使用这个功能:

#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]

我认为问题在于,当我从互联网获取值(例如 000)时,当我将其转换为 int 时,我可以将其作为参数传递给上面的函数,int 表示为 0,因此函数无法识别颜色。例如,当 int 为 90 时,与 090 相同。

4

1 回答 1

0

您需要将十六进制颜色视为字符串并分别处理每个组件。

颜色#3B9 有数字“3”“B”和“9”

但是,看这里你会看到对于 3 位表示,字符加倍。

所以在这种情况下,颜色实际上是#33BB99: red = 3*16+3 = 51 green = 11*16+11 = 187 blue = 8*16+8 = 136 alpha = 255

所以颜色 '#3B9' 会变成: [51/255.0, 187/255.0, 136/255.0, 1.0]

因此,您应该首先确定字符串是否以压缩方式表示颜色,并在必要时复制数字。然后将数字对转换为十进制值,然后转换为 UIColor。

希望有帮助,我希望我的计算是正确的。我不擅长objective-C,所以我不会提供代码,但是编写自己的函数应该很容易,尽管我敢打赌这个函数已经存在于某个地方。

于 2013-05-21T08:18:12.367 回答