从十六进制字符串表示的UIColor

时间:2011-05-18 00:37:57

标签: iphone cocoa-touch nsstring hex uicolor

要获取的任何代码段:

NSString *_s = @"#000000";

到:

[UIColor blackColor];

任何帮助都非常感激,只是乱七八糟的代码来执行此操作:(

3 个答案:

答案 0 :(得分:1)

修改后的版本 - 也采用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)]

答案 1 :(得分: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)

答案 2 :(得分:0)

我在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])。