Dibujar text en color en -drawRect de UIView: método

Estoy intentando dibujar text en color en mi subclass UIView . En este momento estoy usando la plantilla de la aplicación Vista única (para testing). No hay modificaciones excepto el drawRect: method.

El text se dibuja, pero siempre es negro, sin importar a qué se asigne el color.

 - (void)drawRect:(CGRect)rect { UIFont* font = [UIFont fontWithName:@"Arial" size:72]; UIColor* textColor = [UIColor networkingColor]; NSDictionary* stringAttrs = @{ UITextAttributeFont : font, UITextAttributeTextColor : textColor }; NSAttributedString* attrStr = [[NSAttributedString alloc] initWithString:@"Hello" attributes:stringAttrs]; [attrStr drawAtPoint:CGPointMake(10.f, 10.f)]; } 

También probé [[UIColor networkingColor] set] en vano.

Responder:

NSDictionary * stringAttrs = @ {NSFontAttributeName: font, NSForegroundColorAttributeName: textColor};

En lugar de UITextAttributeTextColor , debe usar NSForegroundColorAttributeName . ¡Espero que esto ayude!

Puedes probar con los siguientes methods. Le ayudará a dibujar text en UIView en la esquina inferior derecha con la ayuda de los siguientes attributes.

  • NSFontAttributeName: nombre de fuente con tamaño
  • NSStrokeWidthAttributeName – Ancho del trazo
  • NSStrokeColorAttributeName – Color del text

Objetivo-C : dibuja text en UIView y vuelve como 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 : dibuja text en UIView y vuelve como 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; }`