2011-06-14 20 views
5

Tengo una etiqueta con varias líneas. Quiero que el texto en la etiqueta siempre comience desde la esquina superior izquierda independientemente de la altura y el número de líneas de la etiqueta.Etiqueta Alineación del texto con líneas múltiples

Ahora estoy usando una propiedad

[question1Label setContentMode: UIViewContentModeTopLeft]; 

Pero no su trabajo

Gracias

Respuesta

6

me he dado cuenta de que contentMode propiedad de UILabel no afecta a su texto de alineación. Use la propiedad textAlignment.

label.textAlignment = UITextAlignmentLeft; 

Editar: Esto alineará el texto de centro-izquierda. Para mostrar el texto de la parte superior izquierda, debe encontrar la altura del texto usando el método sizeWithFont: de NSString. See this SO post para saber cómo hacerlo.

Como alternativa se puede utilizar UITextField, la subclase de UIControl, que hereda la propiedadde uicontrol contentVerticalAlignment.

textField.contentVerticalAlignment = UIControlContentVerticalAlignmentTop; 

Se puede utilizar esta propiedad para alinear el texto en la parte superior. Puede deshabilitar al usuario para que no edite el texto utilizando la propiedad userInteractionEnabled.

+1

uso esta propiedad pero solo alinea el texto de la izquierda, pero quiero comenzar mi texto desde la parte superior. – Rachit

+0

@Rachit Taneja, mira mi respuesta actualizada – EmptyStack

0

La respuesta aceptada ya no me funcionó ya que UITextAlignmentLeft se ha depreciado.

¡Lo siguiente funciona muy bien!

// Allow multiline label centered 
[label setNumberOfLines:0]; 
[label setTextAlignment:NSTextAlignmentCenter]; 
Cuestiones relacionadas