Úselo \n
como lo está utilizando en su cadena.
Establezca numberOfLines en 0 para permitir cualquier número de líneas.
label.numberOfLines = 0;
Actualice el marco de la etiqueta para que coincida con el tamaño del texto usando sizeWithFont:
. Si no hace esto, su texto se centrará verticalmente o se cortará.
UILabel *label; // set frame to largest size you want
...
CGSize labelSize = [label.text sizeWithFont:label.font
constrainedToSize:label.frame.size
lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
Actualización: reemplazo por obsoleto
sizeWithFont:constrainedToSize:lineBreakMode:
Referencia, Reemplazo por tamaño obsoleto ConFont: en iOS 7?
CGSize labelSize = [label.text sizeWithAttributes:@{NSFontAttributeName:label.font}];
label.frame = CGRectMake(
label.frame.origin.x, label.frame.origin.y,
label.frame.size.width, labelSize.height);
UILabel
no tiene una propiedadorigin
nisize
en iOS? Probablemente debería serlabel.frame.origin.x
etc.Utilice la opción de retorno al escribir en el cuadro pequeño en Interface Builder para insertar un avance de línea (\ n). En los atributos de Etiqueta del Creador de interfaces, establezca # Líneas = 0.
Seleccione la etiqueta y luego cambie la propiedad Líneas a 0 como en la imagen de arriba, y luego use \ n en su cadena para el salto de línea.
fuente
Si lee una cadena de un archivo XML, el salto de línea
\n
en esta cadena no funcionará en elUILabel
texto. El\n
no se analiza en un salto de línea.Aquí hay un pequeño truco para resolver este problema:
Por lo tanto, debe reemplazar la
\n
parte no analizada en su cadena por una analizada\n
en un código rígidoNSString
.Aquí están mis otras configuraciones de etiqueta:
Lo más importante es establecerlo
numberOfLines
en0
(= número ilimitado de líneas en la etiqueta).¿No tienes idea de por qué Apple ha elegido no analizar
\n
cadenas leídas de XML?Espero que esto ayude.
fuente
\n
cuando se obtienen cadenas de Parse.com (supongo que también sucederá cuando se obtienen cadenas de otras API)En el generador de interfaces, puede usar Ctrl+ Enterpara insertar
/n
en la posición que desee. De esta forma se podría implementar la siguiente situaciónaaa
aaaaaaa
fuente
Tienes que establecer la
numberOfLines
propiedad en elUILabel
. El valor predeterminado es 1 ; si lo configura en 0 , eliminará todos los límites.fuente
Es importante tener en cuenta que es
\n
(barra invertida) en lugar de/n
.fuente
En Swift 2.2,> iOS 8
Establecí Líneas = 0 en Storyboard, en Inspector de atributos y vinculé una salida de referencia a la etiqueta. Luego, use en el controlador de esta manera:
fuente
Solo hazlo así
fuente
// NO olvides poner numberOfLines a cero
fuente
En Xcode 6, puede usar \ n incluso dentro de una cadena cuando usa el ajuste de línea. Funcionará. Así por ejemplo:
fuente
Si está utilizando un
UILabel
, debe recordar que la configuración predeterminada es 1 línea, por lo que no importa cuántos saltos agregue (\n
o\r
), debe asegurarse de que esté configurado en más de una línea para que se pueda agregar Más líneas.Una alternativa es usar lo
UITextView
que realmente está destinado a multilíneas.Puede lograr esto fácilmente en la sección de atributos XCode de UILabel, vea la captura de pantalla:
fuente
Para aquellos de ustedes que desean una solución fácil, haga lo siguiente en el cuadro de entrada Etiqueta de texto:
Asegúrese de que sus líneas numéricas estén establecidas en 0.
Alt + Enter
(Alt es su clave de opción)
¡Salud!
fuente
Solo usando
label.numberOfLines = 0;
fuente
En mi caso, \ n tampoco funcionaba, solucioné el problema manteniendo el número de líneas en 0 y copié y pegué el texto con la nueva línea, por ejemplo, en lugar de Hello \ n World que pegué
en el generador de interfaces.
fuente
En xCode 11, Swift 5
\n
funciona bien, prueba el siguiente código:fuente
fuente
Para cualquier otra persona que pueda tener problemas
sizeWithFont:constrainedToSize:lineBreakMode:
o cambiar a ios8 (el método está en desuso a partir de ios7), ajusté mi altura usando en susizeToFit
lugar.fuente
fuente
Me parece incorrecto cambiar los tamaños de fotograma de la etiqueta, especialmente cuando se utiliza la distribución automática. Usar el método appendFormat parece más apropiado. Aquí está mi ejemplo:
fuente
Si configura sus propiedades UILable de Plain a Attributed ... el UILabel retendrá texto multilínea sin importar cuántos párrafos durante el tiempo, ya que su altura y ancho UILabel están configurados para ajustarse al área de la pantalla en la que desea mostrar el texto.
fuente
Me he enfrentado al mismo problema, y aquí está, cómo resolví el problema. Espero que esto sea útil para alguien.
// Swift 2
// C objetivo
// C # (Xamarin.iOS)
fuente