Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I create a UIColor from a hex string?

How can I create a UIColor from a hexadecimal string format, such as #00FF00?

like image 948
Rupesh Avatar asked Oct 13 '09 12:10

Rupesh


People also ask

How do I encode a hex string?

Hex encoding is performed by converting the 8 bit data to 2 hex characters. The hex characters are then stored as the two byte string representation of the characters. Often, some kind of separator is used to make the encoded data easier for human reading.


2 Answers

I've found the simplest way to do this is with a macro. Just include it in your header and it's available throughout your project.

#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] 

uicolor macro with hex values

Also formatted version of this code:

#define UIColorFromRGB(rgbValue) \ [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 \                 green:((float)((rgbValue & 0x00FF00) >>  8))/255.0 \                  blue:((float)((rgbValue & 0x0000FF) >>  0))/255.0 \                 alpha:1.0] 

Usage:

label.textColor = UIColorFromRGB(0xBC1128); 

Swift:

static func UIColorFromRGB(_ rgbValue: Int) -> UIColor! {     return UIColor(         red: CGFloat((Float((rgbValue & 0xff0000) >> 16)) / 255.0),         green: CGFloat((Float((rgbValue & 0x00ff00) >> 8)) / 255.0),         blue: CGFloat((Float((rgbValue & 0x0000ff) >> 0)) / 255.0),         alpha: 1.0) } 
like image 90
Tom Avatar answered Sep 19 '22 01:09

Tom


A concise solution:

// Assumes input like "#00FF00" (#RRGGBB). + (UIColor *)colorFromHexString:(NSString *)hexString {     unsigned rgbValue = 0;     NSScanner *scanner = [NSScanner scannerWithString:hexString];     [scanner setScanLocation:1]; // bypass '#' character     [scanner scanHexInt:&rgbValue];     return [UIColor colorWithRed:((rgbValue & 0xFF0000) >> 16)/255.0 green:((rgbValue & 0xFF00) >> 8)/255.0 blue:(rgbValue & 0xFF)/255.0 alpha:1.0]; } 
like image 20
darrinm Avatar answered Sep 19 '22 01:09

darrinm