Created
May 27, 2011 00:31
-
-
Save eiffelqiu/994410 to your computer and use it in GitHub Desktop.
Hex color to UIColor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Usage: [self.navigationBar setTintColor: [AppDelegate colorWithHexString:@"4891CC"]]; | |
@interface UIColor (ColorCategory) | |
+(UIColor *) colorWithHexString:(NSString *)hex; | |
@end | |
@implementation UIColor (ColorCategory) | |
+(UIColor *) colorWithHexString:(NSString *)hex | |
{ | |
NSString *cString = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; | |
// String should be 6 or 8 characters | |
if ([cString length] < 6) return [UIColor grayColor]; | |
// strip 0X if it appears | |
if ([cString hasPrefix:@"0X"]) cString = [cString substringFromIndex:2]; | |
if ([cString length] != 6) return [UIColor grayColor]; | |
// Separate into r, g, b substrings | |
NSRange range; | |
range.location = 0; | |
range.length = 2; | |
NSString *rString = [cString substringWithRange:range]; | |
range.location = 2; | |
NSString *gString = [cString substringWithRange:range]; | |
range.location = 4; | |
NSString *bString = [cString substringWithRange:range]; | |
// Scan values | |
unsigned int r, g, b; | |
[[NSScanner scannerWithString:rString] scanHexInt:&r]; | |
[[NSScanner scannerWithString:gString] scanHexInt:&g]; | |
[[NSScanner scannerWithString:bString] scanHexInt:&b]; | |
return [UIColor colorWithRed:((float) r / 255.0f) | |
green:((float) g / 255.0f) | |
blue:((float) b / 255.0f) | |
alpha:1.0f]; | |
} | |
@end | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment