UILabel - Testo Wordwrap


150

Esiste un modo per avere un testo con etichetta a capo, se necessario? Ho le interruzioni di riga impostate su a capo automatico e l'etichetta è abbastanza alta per due righe, ma sembra che andrà a capo solo sulle interruzioni di riga. Devo aggiungere interruzioni di riga per avvolgerlo correttamente? Voglio solo avvolgerlo se non si adatta perfettamente in orizzontale.

Risposte:


301

Se hai impostato numberOfLines su 0 (e l'etichetta per il ritorno a capo automatico), l'etichetta avvolgerà e utilizzerà automaticamente tutte le righe necessarie.

Se stai modificando un UILabelin IB, puoi inserire più righe di testo premendo option+ return per ottenere un'interruzione di riga: returnsolo la modifica verrà completata.


124
Per chiarire noobs come me, questo sarebbe: cell.textLabel.numberOfLines = 0; cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
Brian Moeskau,

46
In iOS 6 e versioni successive, utilizzare NSLineBreakByWordWrapping, non UILineBreakModeWordWrap.
Aaron Brager,

3
Potresti anche aver bisogno di quanto segue: label.autoresizingMask = UIViewAutoresizingFLEXHeight;
William Grand,

6
label.lineBreakMode = .ByWordWrappinge label.numberOfLines = 0in
fretta

9
Per chiunque non fosse ovvio (come me): UILabel deve avere una sorta di limite sulla sua larghezza (o da un vincolo di larghezza reale o vincoli di margine); altrimenti non si avvolgerà.
jcady

27

UILabel ha una proprietà lineBreakMode che è possibile impostare in base alle proprie esigenze.


11
"Ho le interruzioni di riga impostate su a capo automatico". Questo si avvolge solo sulle interruzioni di riga effettive, non si interromperà automaticamente una volta che è troppo lungo.
Codezy,

19

In Swift lo faresti così:

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

(Notare che il modo in cui funziona la costante lineBreakMode è diverso da in ObjC)


Vuoi approfondire come è diverso?
Mike,

Penso di voler dire solo che la denominazione è diversa. Probabilmente è cambiato di nuovo in swift3
Nathan il

La modalità di interruzione di riga dovrebbe essere impostata sul ritorno a
capo automatico

@MobileMonin mia esperienza che non è sempre il caso. Forse IB lo cambia in alcune circostanze?
Nathan,

label.lineBreakMode = NSLineBreakByWordWrapping in Obj C
Nupur Sharma,

2

Xcode 10, Swift 4

Il wrapping del testo per un'etichetta può essere eseguito anche su Storyboard selezionando l'etichetta e utilizzando la finestra di ispezione degli attributi.

Linee = 0 Interruzione di riga = A capo automatico

inserisci qui la descrizione dell'immagine


2
Usando un'etichetta branBrand-New, aggiungendola direttamente alla vista, ciò genera comunque un'etichetta a riga singola (con una larghezza maggiore della larghezza del telefono) per me, nonostante l'impostazione di linee su 0 e l'interruzione di linea su Word Wrap. C'è un'altra impostazione che potrebbe essere necessaria? Devo allegare un codice aggiuntivo?
phihag,
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.