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.