Last active
February 7, 2019 14:25
-
-
Save codingrhythm/4751825 to your computer and use it in GitHub Desktop.
Objective-C class to convert hex string to UIColor. Support #RGB # ARGB #RRGGBB #AARRGGBB Usage: [UIColor colorWithHexString:@"#f5e6a1"];
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
// | |
// UIColor+HexString.h | |
// Class to convert hex string to UIColor | |
// Support #RGB # ARGB #RRGGBB #AARRGGBB | |
// Usage: [UIColor colorWithHexString:@"#f5e6a1"]; | |
// Created by Zhu Yuzhou on 1/20/13. | |
// | |
#import <UIKit/UIKit.h> | |
@interface UIColor (HexString) | |
+ (UIColor *) colorWithHexString: (NSString *) hexString; | |
+ (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length; | |
@end |
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
// | |
// UIColor+HexString.m | |
// | |
// Created by Zhu Yuzhou on 1/20/13. | |
// | |
#import "UIColor+HexString.h" | |
@interface UIColor() | |
+ (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length; | |
@end | |
@implementation UIColor(HexString) | |
+ (UIColor *) colorWithHexString: (NSString *) hexString | |
{ | |
NSString *colorString = [[hexString stringByReplacingOccurrencesOfString: @"#" withString: @""] uppercaseString]; | |
CGFloat alpha, red, blue, green; | |
switch ([colorString length]) { | |
case 3: // #RGB | |
alpha = 1.0f; | |
red = [self colorComponentFrom: colorString start: 0 length: 1]; | |
green = [self colorComponentFrom: colorString start: 1 length: 1]; | |
blue = [self colorComponentFrom: colorString start: 2 length: 1]; | |
break; | |
case 4: // #ARGB | |
alpha = [self colorComponentFrom: colorString start: 0 length: 1]; | |
red = [self colorComponentFrom: colorString start: 1 length: 1]; | |
green = [self colorComponentFrom: colorString start: 2 length: 1]; | |
blue = [self colorComponentFrom: colorString start: 3 length: 1]; | |
break; | |
case 6: // #RRGGBB | |
alpha = 1.0f; | |
red = [self colorComponentFrom: colorString start: 0 length: 2]; | |
green = [self colorComponentFrom: colorString start: 2 length: 2]; | |
blue = [self colorComponentFrom: colorString start: 4 length: 2]; | |
break; | |
case 8: // #AARRGGBB | |
alpha = [self colorComponentFrom: colorString start: 0 length: 2]; | |
red = [self colorComponentFrom: colorString start: 2 length: 2]; | |
green = [self colorComponentFrom: colorString start: 4 length: 2]; | |
blue = [self colorComponentFrom: colorString start: 6 length: 2]; | |
break; | |
default: | |
[NSException raise:@"Invalid color value" format: @"Color value %@ is invalid. It should be a hex value of the form #RBG, #ARGB, #RRGGBB, or #AARRGGBB", hexString]; | |
break; | |
} | |
return [UIColor colorWithRed: red green: green blue: blue alpha: alpha]; | |
} | |
+ (CGFloat) colorComponentFrom: (NSString *) string start: (NSUInteger) start length: (NSUInteger) length | |
{ | |
NSString *substring = [string substringWithRange: NSMakeRange(start, length)]; | |
NSString *fullHex = length == 2 ? substring : [NSString stringWithFormat: @"%@%@", substring, substring]; | |
unsigned hexComponent; | |
[[NSScanner scannerWithString: fullHex] scanHexInt: &hexComponent]; | |
return hexComponent / 255.0; | |
} | |
@end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
How to using this?
example...