UILabel - texto do Wordwrap

150

Existe alguma maneira de ter um rótulo com texto wordwrap, conforme necessário? Eu tenho as quebras de linha definidas como quebra de linha e o rótulo é alto o suficiente para duas linhas, mas parece que ele será quebrado apenas nas quebras de linha. Preciso adicionar quebras de linha para que ela seja quebrada corretamente? Eu só quero embrulhar se não puder encaixar horizontalmente.

Codezy
fonte

Respostas:

301

Se você definir numberOfLines0 (e o rótulo para quebra de linha), o rótulo quebrará automaticamente e usará quantas linhas forem necessárias.

Se você estiver editando um UILabelno IB, poderá inserir várias linhas de texto pressionando option+ return para obter uma quebra de linha - returnsomente a edição será concluída.

Kendall Helmstetter Gelner
fonte
124
Para esclarecer para noobs como eu, isso seria: cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
Brian Moeskau 31/01
46
No iOS 6 e posterior, use NSLineBreakByWordWrapping, não UILineBreakModeWordWrap.
Aaron Brager
3
Você também pode precisar do seguinte: label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
William Grand
6
label.lineBreakMode = .ByWordWrappinge label.numberOfLines = 0rapidamente
AFraser
9
Para quem não é óbvio (como eu): O UILabel deve ter algum tipo de limite em sua largura (seja por uma restrição de largura real ou por restrições de margem); caso contrário, não será quebrado.
jcady
27

UILabelpossui uma propriedade lineBreakModeque você pode definir conforme sua exigência.

Greg
fonte
11
"Eu tenho as quebras de linha definidas como quebra de linha". Isso envolve apenas as quebras de linha reais; não será interrompido automaticamente quando for muito longo.
Codezy
19

No Swift, você faria assim:

    label.lineBreakMode = NSLineBreakMode.ByWordWrapping
    label.numberOfLines = 0

(Observe que o modo como a constante lineBreakMode funciona é diferente no ObjC)

Nathan
fonte
Quer saber como é diferente?
Mike
Eu acho que quis dizer apenas que o nome é diferente. Ele provavelmente mudou novamente em swift3
Nathan
O modo de quebra de linha deve ser definido como quebra de linha como padrão
MobileMon
@MobileMonin minha experiência que nem sempre é o caso. Talvez o IB mude em algumas circunstâncias?
187 Nathan Nathan
label.lineBreakMode = NSLineBreakByWordWrapping no Obj C
Nupur Sharma
2

Xcode 10, Swift 4

A disposição do texto de uma etiqueta também pode ser feita no Storyboard, selecionando a etiqueta e usando o Inspetor de atributos.

Linhas = 0 lineBreak = Word Wrap

insira a descrição da imagem aqui

Naishta
fonte
2
Usando um rótulo branBrand-New, adicionando-o diretamente à exibição, isso ainda gera um rótulo de linha única (com uma largura maior que a largura do telefone) para mim, apesar de definir linhas como 0 e quebra de linha como quebra de linha. Existe outra configuração que possa ser necessária? Preciso anexar código adicional?
Phihag 26/06/19