NSString to UIImage
I had the need to take a regular old NSString and get a UIImage representation of that text. It seems like a relatively straightforward thing to do, so here is the code that I put together:
+ (UIImage *)imageWithView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
+ (UIImage *)imageWithString:(NSString *)theString font:(UIFont *)theFont color:(UIColor *)theColor
{
UILabel *tempLabel = [[UILabel alloc] initWithFrame:CGRectZero];
tempLabel.backgroundColor = [UIColor clearColor];
tempLabel.textColor = theColor;
tempLabel.font = theFont;
tempLabel.text = theString;
[tempLabel sizeToFit];
return [self imageWithView:tempLabel];
}
As an added bonus, if you happen to be using Font Awesome in your iOS project (and let’s be honest, if you aren’t, you should be), here is a bonus method:
+ (UIImage *)imageWithFontAwesomeIcon:(NSString *)faIcon fontSize:(CGFloat)fontSize color:(UIColor *)fontColor
{
return [self imageWithString:[NSString fontAwesomeIconStringForIconIdentifier:faIcon]
font:[UIFont fontWithName:kFontAwesomeFamilyName size:fontSize]
color:fontColor];
}
BTW, Happy Birthday to Brian Setzer, who is a fantastic guitar player and singer.