天天看點

UIColor中使用16進制選取顔色

方法1:

/********************建立.h檔案

#import "TargetConditionals.h"

#if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR

  #import <UIKit/UIKit.h>

  #define HXColor UIColor

#else

  #import <Cocoa/Cocoa.h>

  #define HXColor NSColor

#endif

@interface HXColor (HexColorAddition)

+ (HXColor *)colorWithHexString:(NSString *)hexString;

+ (HXColor *)colorWithHexString:(NSString *)hexString alpha:(CGFloat)alpha;

+ (HXColor *)colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue;

+ (HXColor *)colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue alpha:(CGFloat)alpha;

@end

/********************建立.m檔案

#import "HexColors.h"

@implementation HXColor (HexColorAddition)

+ (HXColor *)colorWithHexString:(NSString *)hexString

{

    // Check for hash and add the missing hash

    if('#' != [hexString characterAtIndex:0])

    {

        hexString = [NSString stringWithFormat:@"#%@", hexString];

    }

    CGFloat alpha = 1.0;

    if (5 == hexString.length || 9 == hexString.length) {

        NSString * alphaHex = [hexString substringWithRange:NSMakeRange(1, 9 == hexString.length ? 2 : 1)];

        if (1 == alphaHex.length) alphaHex = [NSString stringWithFormat:@"%@%@", alphaHex, alphaHex];

        hexString = [NSString stringWithFormat:@"#%@", [hexString substringFromIndex:9 == hexString.length ? 3 : 2]];

        unsigned alpha_u = [[self class] hexValueToUnsigned:alphaHex];

        alpha = ((CGFloat) alpha_u) / 255.0;

    }

    return [[self class] colorWithHexString:hexString alpha:alpha];

}

+ (HXColor *)colorWithHexString:(NSString *)hexString alpha:(CGFloat)alpha

{

    if (hexString.length == 0) {

        return nil;

    }

    // Check for hash and add the missing hash

    if('#' != [hexString characterAtIndex:0])

    {

        hexString = [NSString stringWithFormat:@"#%@", hexString];

    }

    // check for string length

    if (7 != hexString.length && 4 != hexString.length) {

        NSString *defaultHex    = [NSString stringWithFormat:@"0xff"];

        unsigned defaultInt = [[self class] hexValueToUnsigned:defaultHex];

        HXColor *color = [HXColor colorWith8BitRed:defaultInt green:defaultInt blue:defaultInt alpha:1.0];

        return color;

    }

    // check for 3 character HexStrings

    hexString = [[self class] hexStringTransformFromThreeCharacters:hexString];

    NSString *redHex    = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(1, 2)]];

    unsigned redInt = [[self class] hexValueToUnsigned:redHex];

    NSString *greenHex  = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(3, 2)]];

    unsigned greenInt = [[self class] hexValueToUnsigned:greenHex];

    NSString *blueHex   = [NSString stringWithFormat:@"0x%@", [hexString substringWithRange:NSMakeRange(5, 2)]];

    unsigned blueInt = [[self class] hexValueToUnsigned:blueHex];

    HXColor *color = [HXColor colorWith8BitRed:redInt green:greenInt blue:blueInt alpha:alpha];

    return color;

}

+ (HXColor *)colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue

{

    return [[self class] colorWith8BitRed:red green:green blue:blue alpha:1.0];

}

+ (HXColor *)colorWith8BitRed:(NSInteger)red green:(NSInteger)green blue:(NSInteger)blue alpha:(CGFloat)alpha

{

    HXColor *color = nil;

#if (TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE)

    color = [HXColor colorWithRed:(float)red/255 green:(float)green/255 blue:(float)blue/255 alpha:alpha];

#else

    color = [HXColor colorWithCalibratedRed:(float)red/255 green:(float)green/255 blue:(float)blue/255 alpha:alpha];

#endif

    return color;

}

+ (NSString *)hexStringTransformFromThreeCharacters:(NSString *)hexString

{

    if(hexString.length == 4)

    {

        hexString = [NSString stringWithFormat:@"#%1$c%1$c%2$c%2$c%3$c%3$c",

                     [hexString characterAtIndex:1],

                     [hexString characterAtIndex:2],

                     [hexString characterAtIndex:3]];

    }

    return hexString;

}

+ (unsigned)hexValueToUnsigned:(NSString *)hexValue

{

    unsigned value = 0;

    NSScanner *hexValueScanner = [NSScanner scannerWithString:hexValue];

    [hexValueScanner scanHexInt:&value];

    return value;

}

@end

/******************************************控制器中調用

label.textColor            = [UIColor colorWithHexString:@"00AAFF"];

方法2:

/*****************************定義宏定義

//Color

#define TCUIColorFromRGB(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]

/在控制器中調用

readLabel.textColor = TCUIColorFromRGB(0x666666); ///記住前方要加0x