Rótulo de várias linhas do iOS no construtor Interface

131

Como criar uma multilinha UILabelno construtor de interface para iOS? Eu tentei o, UITextViewmas não atendeu às minhas necessidades.

Como posso adicionar múltiplas linhas (texto) no rótulo?

Samuli Lehtonen
fonte
Você pode explicar por que o id não atendeu às suas necessidades? O TextView com somente leitura é igual a um rótulo de múltiplas linhas.
Shreesh
Não parece haver propriedade de cor do texto realçada.
Samuli Lehtonen
7
Para outras pessoas que visitam esta pergunta, não siga a resposta aceita de definir linhas para 5 ou n. Em vez disso, defina-o como 0 (tipo de infinito). Verifique a resposta do vijay abaixo.
21814 GoodSp33d

Respostas:

178

Você pode usar a numberOfLinespropriedade que define o número máximo de linhas que um rótulo pode ter. Por padrão, é 1. Configurá-lo para 0significa que o rótulo terá linhas ilimitadas .

Você pode fazer isso no código:

textLabel.numberOfLines = 5 // for example

Ou no Interface Builder:

akashivskyy
fonte
Eu tentei, funciona quando estou escrevendo o rótulo, mas quando pressiono enter para aceitá-lo, tudo fica em uma linha.
Samuli Lehtonen
3
E qual é o widthseu selo?
akashivskyy
8
Ok, entendi agora, aumentei a altura, e consegui. Obrigado!
Samuli Lehtonen
Você pode definir Linhas como 0 para linhas ilimitadas.
paulmelnikow
2
Veja também esta resposta que explica como digitar uma etiqueta de várias linhas em IB: stackoverflow.com/a/992511/893113
paulmelnikow
117

Pressione Control+ Enterpara adicionar uma linha no UILabel no Interface Builder / Storyboard.

user1233894
fonte
2
Obrigado, isso é o que eu estava tentando fazer :)
Mcont
Essa deve ser a solução!
SunnySonic 25/03
14
Agradável. Mas "Q" não é necessário eu acho
Rendel
1
@ Oliver Logic não sai do Xcode ... Você não leu corretamente. Ele disse que CONTROL + Q + ENTER (e não CMD + Q) .. Mas Rendel está certo apenas que CONTROL + ENTER é suficiente aqui.
gaskbr
1
@Logic não fecha o Xcode ... Você não leu corretamente. Ele disse que CONTROL + Q + ENTER (e não CMD + Q) .. Mas Rendel está certo apenas que CONTROL + ENTER é suficiente aqui.
gaskbr
47

Obrigado AppleVijay!

Também para chamar sizeToFit, assim:

label.lineBreakMode = UILineBreakModeWordWrap;
label.numberOfLines = 0;
[label sizeToFit];

A altura será calculada automaticamente.

Bogdan
fonte
11
Nota: UILineBreakModeWordWrap está obsoleto a partir do iOS6. Use [label setLineBreakMode: NSLineBreakWordWrapping]; em vez de.
John Feagans
5
Faltando "por". label.lineBreakMode = NSLineBreakByWordWrapping
user1872384
1
use NSLineBreakMode.ByWordWrapping em vez de UILineBreakModeWordWrap for swift
Deb
12

defina a largura do rótulo conforme você precisar de tamanho pequeno e use IB para definir quebras de linha para quebra de linha

ou use com código como este

Eu encontrei uma solução.

Basta adicionar o seguinte código:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;
Vijay-Apple-Dev.blogspot.com
fonte
5

Defina o número de linhas zero para informações dinâmicas de texto; será útil quando o texto estiver variando.

Programaticamente (Swift 3)

var label = UILabel()
let stringValue = "iOS\nmultiline\nlabel\nin\nInterface\nbuilder"
label.text = stringValue
label.numberOfLines = 0 // Set 0, if number of lines not specified.
label.lineBreakMode = .byTruncatingTail // or .byWrappingWord
label.minimumScaleFactor = 0.8 . // It is not required but nice to have a minimum scale factor to fit text into label frame

Usando o Inetrface Builder

insira a descrição da imagem aqui

Nota: Não é necessário definir Minimum Font Scale, mas é bom ter um fator de escala mínimo para ajustar o texto ao quadro da etiqueta.

Krunal
fonte
2

O número de linhas é visível no IB com o campo de linhas definidas como UILabels como 0. Ele criará várias linhas de acordo com o espaço fornecido para o rótulo.

siddhant
fonte
1

No iOS7 (Xcode5), você define as linhas do UILabel como 0para várias entradas ilimitadas no storyboard.
O mais importante é definir a height of the UILabellata para conter as linhas de entrada que você irá definir.

Artesão
fonte
0
textLabel.lineBreakMode = UILineBreakModeWordWrap;

textLabel.numberOfLines = 0;

CGSize size =  [[[arrNewsFeed objectAtIndex:row] objectForKey:@"c"]  sizeWithFont:[UIFont systemFontOfSize:14.0]  constrainedToSize:CGSizeMake(188, CGFLOAT_MAX)
                                                                     lineBreakMode:NSLineBreakByTruncatingTail];

textLabel.frame = (CGRect){.origin = cell.lblNewsDescription.frame.origin, .size = size};
Tanvi Jain
fonte
0

Se você definir a propriedade numberOfLines igual a 0, o rótulo será automaticamente ajustado ao número necessário de linhas do texto fornecido.

Pablo Marrufo
fonte
0

Eu estava lutando com isso há muito tempo. Eu só queria que o texto do meu rótulo aparecesse na segunda linha. Mas, o que quer que eu faça, isso apenas excederá a caixa UILabel. Para mim, a alteração do tamanho do autor no inspetor de tamanho funcionou. Correção simples.

Pode ser que alguém possa achar útil alguém que esteja procurando algo semelhante.

Harshal Karande
fonte
-2

Para o X-Code 7.2

  1. - Selecione UILabel

  2. - Inspetor de atributos

  3. - Texto - Selecione Atribuído

Depois disso, você poderá ver mais alguns atributos que poderá adicionar ao seu rótulo, no qual também poderá encontrar o número de Linhas . O que torna sua etiqueta multilinha .

Imagem de código X para um UILabel de várias linhas

codeCraft
fonte
O número de linhas é visível no IB com rótulos UIL simples.
Graham Lea