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?


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:


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.


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.


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;

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.


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.


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.


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};

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.


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.


-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


O número de linhas é visível no IB com rótulos UIL simples.
Graham Lea
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.