2012-11-03 13 views
7

Ich arbeitete UILabel. Aber setLineBreakMode ist veraltet. Ich habe NSAttributedString verwendet. aber UILabel setLineBreakMode ist Danach funktioniert UILabel setNumberOfLines sonst nicht.Neue NSAttributedString multiline

Vorher:

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 nach:

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]; 

mag ich vor und nach der Anzeige das gleiche sein. Wie werden mehrere Zeilen angezeigt?

+0

Viele finden Sie hier sein. Haben Sie gesehen? – rbbtsn0w

Antwort

4

Die Eigenschaft lineBreakMode ist in iOS 6 nicht veraltet. Sie hat lediglich die Namen der Konstanten geändert. Die alten Konstanten sind veraltet, aber immer noch verfügbar. Sie können die neuen Konstanten auch verwenden, wenn Sie ein älteres iOS bereitstellen, da die Konstanten nur Listenwerte sind. Die alten Namen und die neuen Namen haben die gleichen Werte. Stellen Sie einfach memoLabel.lineBreakMode = NSLineBreakByTruncatingTail ein.

Ihr Beispielcode scheint keine attributierten stringspezifischen Merkmale zu nutzen. Wenn Sie keine attributierte Zeichenfolge benötigen, verwenden Sie einfach eine einfache Zeichenfolge. Das funktioniert immer noch in iOS 6.

2

Verwenden NSLineBreakByTruncatingTail statt UILineBreakModeTailTruncation