2011-10-11 12 views
23

Quando cambio dinamicamente il testo di un UILabel, preferisco ottenere un'ellissi (punto, punto, punto) piuttosto che ridimensionare automaticamente il testo. Come si fa a fare questo?Ottenere UILabel per produrre un'ellissi anziché ridurre il carattere

In altre parole, se ho UILabel con la parola Cat con dimensione carattere 14 e quindi cambio la parola in Hippopotamus il carattere si restringe per adattarsi a tutta la parola. Preferirei che la parola venisse automaticamente troncata seguita da un'ellissi.

Presumo che ci sia un parametro che può essere modificato all'interno del mio oggetto UILabel. Preferirei non farlo a livello di programmazione.

risposta

64

impostare le seguenti proprietà:

label.adjustsFontSizeToFitWidth = NO; 
label.lineBreakMode = NSLineBreakByTruncatingTail; 

è anche possibile impostare queste proprietà in Interface Builder.

+7

UILineBreakModeTailTruncation è contrassegnato come deprecato, documenti consiglia di utilizzare NSLineBreakByTruncatingTail. Che fa la stessa cosa – jbat100

+1

Credo inoltre che l'impostazione predefinita per UILabels sia quella di avere adjustFontSizeToFitWidth impostato su NO –

+0

Cosa fare se si hanno due etichette affiancate e si desidera che una sia in grado di troncare con i puntini di sospensione e l'altra di non regolare la dimensione del carattere né troncare (assumere c'è abbastanza spazio per il testo). I loro frame si regolano usando i vincoli. Esiste un vincolo che costringerà una dimensione ad essere grande almeno quanto la dimensione del contenuto deve essere per evitare un ellissi o un troncamento? –

-4

ho raggiunti da seguenti fasi:

1.Aumento altezza di etichetta come ho fatto in modo che 2 linee misura.

etichetta 2.select, andare a attributes inspector

3.select Line Breaks linee = Word Wrap

4.Also aumento, come 2,3

changing line break in attributes inspector Ha lavorato per me

+2

Come si genera un'ellissi? –

+0

Questa risposta non ha rilevanza per la domanda in questione. –

6

Soluzione rapida:

label.lineBreakMode = .ByTruncatingTail 

Swift 3:

label.lineBreakMode = .byTruncatingTail 
+0

non puoi fare semplicemente 'label.lineBreakMode = .ByTruncatingTail'? –

+0

Sembra - sì :) – dijipiji

Problemi correlati