2012-11-03 22 views
7

Tôi đã làm việc với UILabel. Nhưng setLineBreakMode không được chấp nhận. Tôi đã sử dụng NSAttributedString. nhưng UILabel setLineBreakMode là Sau đó UILabel setNumberOfLines khác không hoạt động.NSAttributedString mới multiline

Trước:

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

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

Tôi muốn được như vậy trước và sau màn hình. Cách hiển thị nhiều dòng?

+0

Nhiều bạn tìm thấy ở đây. Bạn đã xem chưa? – rbbtsn0w

Trả lời

4

Thuộc tính lineBreakMode không được chấp nhận trong iOS 6. Nó chỉ đơn giản là thay đổi tên của các hằng số. Các hằng số cũ không được chấp nhận nhưng vẫn có sẵn. Bạn có thể sử dụng các hằng số mới ngay cả khi bạn đang triển khai cho một iOS cũ hơn, vì các hằng số chỉ là các giá trị enum. Tên cũ và tên mới có cùng giá trị. Vì vậy, chỉ cần đặt memoLabel.lineBreakMode = NSLineBreakByTruncatingTail.

Mã ví dụ của bạn dường như không tận dụng được bất kỳ tính năng cụ thể của chuỗi được phân bổ nào. Nếu bạn không cần một chuỗi được phân bổ, chỉ cần tiếp tục sử dụng một chuỗi đơn giản. Điều đó vẫn hoạt động trong iOS 6.

2

Sử dụng NSLineBreakByTruncatingTail thay vì UILineBreakModeTailTruncation