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.

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.


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.


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)


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.