Objective-C/iOS/iPhone: UIColor from NSString

📆 2010-10-14  |  #cocoa, code, ipad, iphone, mac, objective-c, programming, software

A handy code snippet for converting hex strings to UIColors.

Until I find a home for my little snippets of code, here is where they will go. While building an iOS (iPhone) application, I needed a quick little method in Objective-c that would take strings of color codes from data provided by web developer peeps and convert those string values into UIColor objects. For instance, sometimes we'd get "#ff7401" from the data for our app. Sometimes it might be formatted like, "0xff7401" or even just, "ff7401". I simply created a category on NSString to make is super-simple.

NSString+meltutils.h

Objective-C
//  UIColor+meltutils.h

//  Created by Andy Frey on 10/15/10.

#import <Foundation/Foundation.h>

@interface NSString (meltutils)

- (UIColor *)toUIColor;

@end

NSString+meltutils.m

Objective-C
#import "NSString+meltutils.h"

@implementation NSString (meltutils)

  - (UIColor *)toUIColor {

  unsigned int c;

  if ([self characterAtIndex:0] == '#') {

    [[NSScanner scannerWithString:[self substringFromIndex:1]] scanHexInt:&c];

  } else {

    [[NSScanner scannerWithString:self] scanHexInt:&c];

  }

  return [UIColor colorWithRed:((c & 0xff0000) >> 16)/255.0 green:((c & 0xff00) >> 8)/255.0 blue:(c & 0xff)/255.0 alpha:1.0];

}

@end

So, to use this, all you have to do is import the header file and send a message to your string that contains the color code:

Objective-C
#import "NSString+meltutils.h"
...
UIColor *c = [@"#ff840a" toUIColor];
...

Hope that helps someone out a little!

Loading comments...