【发布时间】:2009-09-30 14:10:10
【问题描述】:
正如标题所说,我想使用颜色代码而不是这样做
lblTemp.textColor = [UIColor colorWithRed: 0 green:0x99/255.0 blue:0 alpha:1.0];
例如,我有以下颜色代码#30ae36,我该如何使用它而不是执行上述操作。
【问题讨论】:
标签: objective-c iphone
正如标题所说,我想使用颜色代码而不是这样做
lblTemp.textColor = [UIColor colorWithRed: 0 green:0x99/255.0 blue:0 alpha:1.0];
例如,我有以下颜色代码#30ae36,我该如何使用它而不是执行上述操作。
【问题讨论】:
标签: objective-c iphone
我使用这个方便的宏:
#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]
(我可能已经得到它from here,但你可以在很多地方找到它。无论如何,值得阅读此链接上关于宏与内联函数的讨论。)
如果你想从一个字符串(例如从一个 plist)初始化颜色,你可以使用这个:
unsigned rgbValues;
[[NSScanner scannerWithString:@"0xFF0000"] scanHexInt: &rgbValues];
UIColor* redColor = UIColorFromRGB(rgbValues);
【讨论】:
UIColor 没有为此提供默认方法,但是,您可以为 UIColor 创建一个所谓的category,它采用十六进制值(不带 #)并将其转换为相应的 RGB 组件并使用这些组件提供给 UIColor 的 colorWithRed:green:blue:alpha:。
【讨论】:
这应该可以解决此代码 #30ae36
lblTemp4.textColor = [UIColor colorWithRed:0x*30*/255.0 green:0x*AE*/255.0 blue:0x*36*/255.0 alpha:1.0];
【讨论】:
在上一个答案中,jovany 中的 * * 星号应省略。所以#30ae36 变成:
lblTemp4.textColor = [UIColor colorWithRed:0x30/255.0 green:0xAE/255.0 blue:0x36/255.0 alpha:1.0];
(也许很明显,但我第一眼没看懂)
【讨论】: