2012-11-03 10 views
7

Ho lavorato con UILabel. Ma setLineBreakMode è deprecato. Ho utilizzato NSAttributedString. ma UILabel setLineBreakMode è Dopo che UILabel setNumberOfLines else non funziona.Nuovo NSAttributoStringa multilinea

Prima:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)]; 
label.text = @"XXXXXX"; 
memoLabel.textAlignment = UITextAlignmentLeft; 
memoLabel.numberOfLines = 2; 
memoLabel.lineBreakMode = UILineBreakModeTailTruncation; 
memoLabel.font = [UIFont systemFontOfSize:11]; 
memoLabel.backgroundColor = [UIColor clearColor]; 

IOS 6 dopo:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 
paragraphStyle.alignment = NSTextAlignmentLeft; 
NSAttributedString *string 
    = [[NSAttributedString alloc] initWithString:text 
            attributes:[NSDictionary 
               dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:11], 
               NSFontAttributeName, 
               paragraphStyle, NSParagraphStyleAttributeName,nil]]; 
[paragraphStyle release]; 
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(42.0f, 10.0f, 275.0f, 50.0f)]; 
label.attributedText = string; 
[string relase]; 

Voglio essere la stessa prima e dopo l'esposizione. Come visualizzare più righe?

+0

Molti essere che trovate qui. Hai visto ? – rbbtsn0w

risposta

4

La proprietà lineBreakMode non è deprecata in iOS 6. Ha semplicemente cambiato i nomi delle costanti. Le vecchie costanti sono deprecate, ma ancora disponibili. Puoi usare le nuove costanti anche se stai distribuendo su un iOS più vecchio, perché le costanti sono solo valori di enum. I vecchi nomi e i nuovi nomi hanno gli stessi valori. Quindi, imposta memoLabel.lineBreakMode = NSLineBreakByTruncatingTail.

Il codice di esempio non sembra sfruttare le caratteristiche specifiche della stringa attribuita. Se non hai bisogno di una stringa attribuita, continua a utilizzare una stringa semplice. Che funziona ancora in iOS 6.

2

Uso NSLineBreakByTruncatingTail invece di UILineBreakModeTailTruncation