Etichetta multilinea per iOS in Interface builder


131

Come posso creare un UILabelgeneratore di interfacce multilinea per iOS? Ho provato il UITextViewma non era del tutto adatto alle mie esigenze.

Come posso aggiungere multilinea (testo) nell'etichetta?


Puoi spiegare perché ID non ha soddisfatto le tue esigenze? TextView con sola lettura è uguale a un'etichetta multilinea.
Shreesh,

Non sembra essere evidenziata la proprietà del colore del testo.
Samuli Lehtonen,

7
Per gli altri che visitano questa domanda, non seguire la risposta accettata per impostare le righe su 5 o n. Impostalo invece su 0 (Ordinamento dell'infinito). Controlla la risposta di vijay di seguito.
GoodSp33d

Risposte:


178

È possibile utilizzare la numberOfLinesproprietà che definisce il numero massimo di righe che un'etichetta può avere. Per impostazione predefinita, lo è 1. Impostandolo su 0significa che avrà l'etichetta linee illimitate .

Puoi farlo nel codice:

textLabel.numberOfLines = 5 // for example

O in Interface Builder:


Ho provato, funziona quando scrivo l'etichetta, ma quando premo Invio per accettarlo tutto procede su una riga.
Samuli Lehtonen,

3
E qual è la widthtua etichetta?
Akashivskyy,

8
Ok, l'ho preso ora, aumentato l'altezza, che l'ha fatto. Grazie!
Samuli Lehtonen,

È possibile impostare Linee su 0 per linee illimitate.
paulmelnikow,

2
Si veda anche questa risposta che spiega come digitare un'etichetta su più righe in IB: stackoverflow.com/a/992511/893113
paulmelnikow

117

Premi Control+ Enterper aggiungere una linea in UILabel in Interface Builder / Storyboard.


2
Grazie, è quello che stavo cercando di fare :)
Mc il

Questa dovrebbe essere la soluzione!
SunnySonic,

14
Ben fatto. Ma "Q" non è necessario immagino
Rendel il

1
@Oliver Logic non esce da Xcode ... Non hai letto correttamente. Ha detto CONTROL + Q + ENTER (e non CMD + Q) .. Ma Rendel ha ragione solo CONTROL + ENTER è sufficiente qui.
Gaskbr,

1
@Logic non esce da Xcode ... Non hai letto correttamente. Ha detto CONTROL + Q + ENTER (e non CMD + Q) .. Ma Rendel ha ragione solo CONTROL + ENTER è sufficiente qui.
Gaskbr,

47

Grazie AppleVijay!

Anche per chiamare sizeToFit, in questo modo:

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

L'altezza verrà calcolata automaticamente.


11
Nota: UILineBreakModeWordWrap è obsoleto a partire da iOS6. Utilizzare [label setLineBreakMode: NSLineBreakWordWrapping]; anziché.
John Feagans il

5
"By" mancante. label.lineBreakMode = NSLineBreakByWordWrapping
user1872384

1
usa NSLineBreakMode.ByWordWrapping invece di UILineBreakModeWordWrap per swift
Deb

12

imposta la larghezza dell'etichetta in base alle tue esigenze, quindi usa IB per impostare le interruzioni di riga sull'involucro

o utilizzare con codice come questo

Ho trovato una soluzione

Basta aggiungere il seguente codice:

textLabel.lineBreakMode = NSLineBreakByWordWrapping;
textLabel.numberOfLines = 0;

5

Imposta il numero di righe zero per informazioni di testo dinamiche, sarà utile quando il tuo testo varia.

Programmaticamente (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

Utilizzando Inetrface Builder

inserisci qui la descrizione dell'immagine

Nota: non è necessario impostare Minimum Font Scale, ma è bello avere un fattore di scala minimo per adattare il testo al riquadro dell'etichetta.


2

Il numero di linee è visibile in IB con il campo UILabels impostato come 0. Creerà più righe secondo lo spazio fornito all'etichetta.


1

In iOS7 (Xcode5) devi impostare le linee di UILabel su 0per input multipli illimitati nello storyboard.
Il più importante è impostare il height of the UILabelpuò contenere le linee di input che si intende impostare.


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 si imposta la proprietà numberOfLines su 0, l'etichetta si adatterà automaticamente al numero richiesto di righe del testo specificato.


0

Ho lottato con questo per molto tempo. Volevo solo che il mio testo dell'etichetta apparisse sulla seconda riga. Ma qualunque cosa io faccia, sarebbe solo traboccare la scatola UILabel. Per me, la modifica dell'ispettore di dimensioni automatiche ha funzionato. Soluzione semplice.

Potrebbe essere qualcuno potrebbe trovare utile chi è alla ricerca di qualcosa di simile.


-2

Per X-Code 7.2

  1. - Seleziona UILabel

  2. - Ispettore degli attributi

  3. - Testo: selezionare Attribuito

Dopodiché puoi vedere qualche altro attributo che puoi aggiungere nella tua etichetta, in cui puoi anche trovare il numero di Linee . Che rendono la tua etichetta multilinea .

Immagine X-Code per un UILabel multilinea


Il numero di linee è visibile in IB con UILabels semplici.
Graham Lea,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.