I am trying to draw colored text in my UIView subclass. Right now I am using the Single View app template (for testing). There are no modifications except the drawRect: method.
The text is drawn but it is always black no matter what I set the color to.
- (void)drawRect:(CGRect)rect { UIFont* font = [UIFont fontWithName:@"Arial" size:72]; UIColor* textColor = [UIColor redColor]; NSDictionary* stringAttrs = @{ UITextAttributeFont : font, UITextAttributeTextColor : textColor }; NSAttributedString* attrStr = [[NSAttributedString alloc] initWithString:@"Hello" attributes:stringAttrs]; [attrStr drawAtPoint:CGPointMake(10.f, 10.f)]; } I've also tried [[UIColor redColor] set] to no avail.
Answer:
NSDictionary* stringAttrs = @{ NSFontAttributeName : font, NSForegroundColorAttributeName : textColor };
Instead of UITextAttributeTextColor you should use NSForegroundColorAttributeName. Hope this helps!
You can try with following methods. It will help you to draw text in UIView at the bottom right corner with the help of following attributes.
Objective-C - Draw text in the UIView and return as UIImage.
-(UIImage *) imageWithView:(UIView *)view text:(NSString *)text { UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; // Setup the font specific variables NSDictionary *attributes = @{ NSFontAttributeName : [UIFont fontWithName:@"Helvetica" size:12], NSStrokeWidthAttributeName : @(0), NSStrokeColorAttributeName : [UIColor blackColor] }; // Draw text with CGPoint and attributes [text drawAtPoint:CGPointMake(view.frame.origin.x+10 , view.frame.size.height-25) withAttributes:attributes]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; }` Swift - Draw text in the UIView and return as UIImage.
func imageWithView(view : UIView, text : NSString) -> UIImage { UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); view.layer.renderInContext(UIGraphicsGetCurrentContext()!); // Setup the font specific variables let attributes :[String:AnyObject] = [ NSFontAttributeName : UIFont(name: "Helvetica", size: 12)!, NSStrokeWidthAttributeName : 0, NSForegroundColorAttributeName : UIColor.blackColor() ] // Draw text with CGPoint and attributes text.drawAtPoint(CGPointMake(view.frame.origin.x+10, view.frame.size.height-25), withAttributes: attributes); let img:UIImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; }`
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With