2012-11-03 10 views
7

Pracowałem w UILabel. Ale setLineBreakMode jest przestarzałe. Używam NSAttributedString. ale UILabel setLineBreakMode to Po tym ustawieniu UILabel setNumberOfLines else nie działa.Nowa wielopłytka NSAttributedString

Przed:

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

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

chcę być taka sama przed i po wyświetlaczu. Jak wyświetlić wiele linii?

+0

Wiele można znaleźć tutaj. Czy widziałeś ? – rbbtsn0w

Odpowiedz

4

Właściwość lineBreakMode nie jest przestarzała w systemie iOS 6. Po prostu zmieniła nazwy stałych. Stare stałe są przestarzałe, ale nadal dostępne. Możesz używać nowych stałych, nawet jeśli wdrażasz na starszym systemie iOS, ponieważ stałe są tylko wartościami wyliczonymi. Stare nazwy i nowe nazwy mają te same wartości. Tak, po prostu ustaw memoLabel.lineBreakMode = NSLineBreakByTruncatingTail.

Twój przykładowy kod wydaje się nie korzystać z żadnych funkcji specjalnych przypisanych ciągów. Jeśli nie potrzebujesz przyporządkowanego ciągu, po prostu używaj zwykłego napisu. Że nadal działa w iOS 6.

2

Korzystanie NSLineBreakByTruncatingTail zamiast UILineBreakModeTailTruncation