如何将十六进制值转换为UIColor?

时间:2011-03-23 21:34:02

标签: iphone colors hex uicolor cgcolor

我有十六进制颜色值,我想将其转换为UIColor。 UIColor可以采用色相/饱和度/亮度(HSB)值或红/蓝/绿(RGB)值。如何使用十六进制值创建UIColor?

6 个答案:

答案 0 :(得分:2)

有一个很棒的免费库基本上只是UIColor here的一些附加内容(我认为这与我使用的相同,不记得了)。检查一下以确定,但我认为它有你想要的东西。

答案 1 :(得分:2)

一段时间从某个地方拿起来,现在我的所有项目一直坐在我的宏标题中。

使用: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 :(得分:1)

查看How can I create a UIColor from a hex string?

的答案

基本概念是采用十六进制字符串的红蓝绿色段,将它们除以256,并且你有[0,1]红色蓝绿色值,这是UIColor需要的。

忘记HSB值,您不需要进行转换。

答案 3 :(得分:0)

我不确定你的颜色值是如何在HEX值中编码的。但这是一个RGB值的例子。假设你有一个像这个hexRGB = 0xRRGGBB这样编码的HEX值来将它分配给UIColor,你只需要做的就是

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

如果从编码值的十六进制读取HSB值,则可以使用相同的技术:0xHHSSBB

答案 4 :(得分:0)

正如其他人所说,你的HEX值可能是RGB。

对于我发现以编程方式创建按钮高亮显示的方法,我需要执行此操作一次。 HSB(或HSV,因为它也是众所周知的)背后的理论在wikipedia.进行了非常详细的讨论。色彩空间的所有数学都是如此,如果实现自己的数学,它可能就是开始的地方。

Rochester Institute of Technology.的C中有一个很好的,紧凑的,简单的实现你应该能够粘贴这些函数并直接使用它们。

(但如果Erica Sadun在UIColor中编写了一个提供此功能的类别,请使用它。请参阅Jesse Naugher的链接答案。)

答案 5 :(得分:0)

关注此link。它告诉我们如何将十六进制代码转换为UIColor并使用它。

我试过了,它对我有用。