2010-10-22 13 views

Respuesta

7

UILabel no puede dibujar una etiqueta con diferentes atributos/fuentes dentro del texto. Pero Core Text puede. Puede crear una subclase de UILabel que envuelve una cadena atribuida y utiliza el Texto central para dibujarla. Se puede controlar el dibujo como en this sample code de la guía de programación de texto básico:

// Build up your attributed string, then... 
CTLineRef line = CTLineCreateWithAttributedString(attrString); 

// Set text position and draw the line into the graphics context 
CGContextSetTextPosition(context, 10.0, 10.0); 
CTLineDraw(line, context); 
CFRelease(line); 
1

Lamentablemente, esto no es posible actualmente. Sin embargo, podría subclase UILabel e incluir esta funcionalidad.

Otra posibilidad sería utilizar un UIWebView, pero esto requiere el uso de etiquetas HTML y el método loadHTML :.

1

Como escribió Evan Mulawski, UILabel no va a conseguir lo que quiere. En ese caso, tampoco lo harán UITextField ni UITextView.

Otro enfoque sería subclasificar a UIView y escribir un método -drawRect: que haga lo que desee. Lo podría hacer en

  • CGContextShowTextAtPoint
  • [NSString drawAtPoint: withFont:]
  • [NSString sizeWithFont:]

Si no va ser requieren una gran cantidad de saltos de línea y de embalaje, entonces probablemente puedas crear algo bastante fácilmente.

UIWebView probablemente sea más rápido, pero parece una sobrecarga para algo tan simple como una etiqueta con estilo.

Cuestiones relacionadas