2014-05-12 4 views
10

sto cercando di visualizzare un UILabel con 2 linee con qualcosa di simile:UILabel con 2 righe, come troncare ciascuna linea in modo indipendente?

"Here is the first line (a long one) and that's it" 
"And this is the second line with random number of chars" 

Con Tronca Tail visualizza questo:

"Here is the first line (a long one) and that's ..." 

Il mio obiettivo è quello di visualizzazione:

"Here is the first line (a long .." 
"And this is the second line wit.." 

C'è un modo per farlo con UILabel impostato su 2 righe e senza utilizzare 2 UILabel's?

+0

Sono presenti interruzioni di riga come parte del testo? in tal caso, è possibile calcolare la lunghezza del testo per le impostazioni di controllo specificate e troncare le linee individualmente. Altrimenti non capisco esattamente cosa vuoi ottenere. –

+0

Esattamente, l'ho fatto e funziona. Ma quando lo schermo viene ruotato in orizzontale, mi piacerebbe che ogni riga "si espandesse" ed è per questo che lo sto chiedendo. Qualche pensiero? –

+0

Buon punto, è necessario ripetere i calcoli ogni volta che viene modificata l'area di disegno o il testo. Può essere fatto sottoclassando 'UILabel' e sovrascrivendo' setText: 'e' layoutSubviews', sebbene il primo non copra tutti i text setter e quest'ultimo potrebbe non essere il metodo migliore per cambiare il testo, fate attenzione a creare un infinito ricorsione. –

risposta

-4

Innanzitutto, è necessario impostare il numero di linee su 0 (numero infinito di righe);

textLabel.numberOfLines = 0; 

Successivamente, è possibile rompere dove si vuole in questo modo:

textLabel.text = "str1 \n str2" 
+0

- 1: Prova a creare un progetto di esempio ... non funzionerà con una UILabel ... –

+0

Il problema non sono le interruzioni di riga, è il troncamento. Questo non aiuterà. –

-2

dividere la stringa su \n per creare due stringhe. Quindi creare 2 UILabels impostati su numberOfLines = 1 e lineBreakMode = .ByTruncatingTail. Disporle nella vista, una sopra l'altra.

+0

La domanda specifica specificamente un'etichetta non due. –