Objective-C/iOS/iPhone: UIColor from NSString
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
[code lang="objc"]
// UIColor+meltutils.h
// Created by Andy Frey on 10/15/10.
#import <Foundation/Foundation.h>
@interface NSString (meltutils)
- (UIColor *)toUIColor;
@end
[/code]
NSString+meltutils.m
[code lang="objc"]
#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
[/code]
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:
[code lang="objc"] #import "NSString+meltutils.h" ... UIColor *c = [@"#ff840a" toUIColor]; ... [/code]
Hope that helps someone out a little!