【发布时间】:2011-08-27 16:15:52
【问题描述】:
从任何 sn-p 获取:
NSString *_s = @"#000000";
到:
[UIColor blackColor];
任何帮助都非常感谢,只是一直在用丑陋的代码来做这件事:(
【问题讨论】:
标签: iphone cocoa-touch nsstring hex uicolor
从任何 sn-p 获取:
NSString *_s = @"#000000";
到:
[UIColor blackColor];
任何帮助都非常感谢,只是一直在用丑陋的代码来做这件事:(
【问题讨论】:
标签: iphone cocoa-touch nsstring hex uicolor
修改后的版本 - 也采用 Alpha 值
#define UIColorFromRGBA(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF000000) >> 24))/255.0 green:((float)((rgbValue & 0xFF0000) >> 16))/255.0 blue:((float)((rgbValue & 0xFF00) >> 8 ))/255.0 alpha:((float)((rgbValue & 0xFF))/255.0)]
【讨论】:
这对我有用:
#define UIColorFromRGB(rgbValue) \
[UIColor \
colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \
green:((float)((rgbValue & 0x00FF00) >> 8))/255.0 \
blue:((float)(rgbValue & 0x0000FF))/255.0 \
alpha:1.0]
像这样使用它:
UIColorFromRGB(0x4c4c4c)
【讨论】:
我在UIColor 上写了一个类别来实现这一点:
创建一个新的 Objective-C 类别。在您的标题中:
#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]
@interface UIColor (Hex)
+ (UIColor*)colorFromHex:(NSString*)hex;
@end
在你的实现中:
@implementation UIColor (Hex)
+ (UIColor*)colorFromHex:(NSString *)hex
{
unsigned result = 0;
NSScanner *scanner = [NSScanner scannerWithString:hex];
[scanner setScanLocation:0];
[scanner scanHexInt:&result];
return UIColorFromRGB(result);
}
@end
假设您的十六进制字符串格式为 000000,但您可以根据需要进行调整以考虑 #(将 [scanner setScanLocation:0] 更改为 [scanner setScanLocation:1])。
【讨论】: