Usar \n
como você está usando em sua string.
Defina numberOfLines como 0 para permitir qualquer número de linhas.
label.numberOfLines = 0;
Atualize o quadro de etiqueta para corresponder ao tamanho do texto usando sizeWithFont:
. Se você não fizer isso, seu texto será centralizado verticalmente ou cortado.
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);
Atualização: substituição por obsoleta
sizeWithFont:constrainedToSize:lineBreakMode:
Referência, Substituição por tamanho descontinuado
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
não tem uma propriedadeorigin
nemsize
no iOS? Provavelmente deve serlabel.frame.origin.x
etc.Use Option-Return ao digitar na pequena caixa no Interface Builder para inserir um avanço de linha (\ n). Nos atributos Rótulo do Interface Builder, defina # Lines = 0.
Selecione o rótulo e altere a propriedade Linhas para 0, como na imagem acima, e use \ n na sua sequência para quebra de linha.
fonte
Se você ler uma sequência de um arquivo XML, a quebra de linha
\n
dessa sequência não funcionará emUILabel
texto. o\n
não é analisado para uma quebra de linha.Aqui está um pequeno truque para resolver esse problema:
Portanto, você deve substituir a
\n
parte não analisada em sua string por uma analisada\n
em um código codificadoNSString
.Aqui estão minhas outras configurações de marcador:
O mais importante é definir
numberOfLines
como0
(= número ilimitado de linhas no rótulo).Não faço ideia por que a Apple optou por não analisar as
\n
strings lidas no XML?Espero que isto ajude.
fonte
\n
quando chegar cordas de Parse.com (acho que também vai acontecer quando chegar a corda de outras APIs)No construtor de interface, você pode usar Ctrl+ Enterpara inserir
/n
na posição desejada. Desta forma, poderia implementar a seguinte situaçãoaaa
aaaaaaa
fonte
Você precisa definir a
numberOfLines
propriedade noUILabel
. O padrão é 1 , se você defini-lo como 0 , todos os limites serão removidos.fonte
Importante notar que é
\n
(barra invertida) e não/n
.fonte
No Swift 2.2,> iOS 8
Eu configurei Lines = 0 no Storyboard, no Attribute Inspector e vinculei uma saída de referência ao rótulo. Em seguida, use no controlador como este:
fonte
Apenas faça assim
fonte
// NÃO se esqueça de definir numberOfLines como zero
fonte
No Xcode 6, você pode usar \ n mesmo dentro de uma string ao usar quebra de linha. Vai funcionar. Então, por exemplo:
fonte
Se você estiver usando um
UILabel
, lembre-se de que a configuração padrão é 1 linha; portanto, não importa quantas quebras você adicionar (\n
ou\r
), verifique se ele está definido para mais de uma linha, para poder anexar mais linhas.Uma alternativa é usar o
UITextView
que é realmente destinado a multilinhas.Você pode conseguir isso facilmente na seção de atributos XCode do UILabel, veja a captura de tela:
fonte
Para aqueles que desejam uma solução fácil, faça o seguinte na caixa de entrada Rótulo do texto:
Verifique se as linhas numéricas estão definidas como 0.
Alt + Enter
(Alt é sua tecla de opção)
Felicidades!
fonte
Apenas usando
label.numberOfLines = 0;
fonte
No meu caso, também \ n não estava funcionando, resolvi o problema mantendo o número de linhas em 0 e copiei e colei o texto com a nova linha, por exemplo, em vez de Hello \ n World que colei
no construtor de interface.
fonte
No xCode 11, o Swift 5
\n
funciona bem, tente o código abaixo:fonte
fonte
Para qualquer outra pessoa que possa ter problemas
sizeWithFont:constrainedToSize:lineBreakMode:
ou mudar para o ios8 (o método foi descontinuado a partir do ios7), ajustei minha altura usandosizeToFit
.fonte
fonte
Parece-me errado alterar os tamanhos dos quadros de etiquetas, especialmente ao usar o layout automático. O uso do método appendFormat parece mais apropriado. Aqui está o meu exemplo:
fonte
Se você definir suas propriedades UILable de Simples para Atribuído ... o UILabel conterá texto de várias linhas, não importa quantos parágrafos, enquanto sua altura e largura do UILabel estiverem definidas para caber na área da tela em que você deseja exibir o texto.
fonte
Eu enfrentei o mesmo problema, e aqui está como eu resolvi o problema. Espero que isso seja útil para alguém.
// Swift 2
// Objetivo-C
// C # (Xamarin.iOS)
fonte