2012-11-03 4 views
7

나는 UILabel을 연구했습니다. 그러나 setLineBreakMode는 더 이상 사용되지 않습니다. NSAttributedString을 사용하고 있습니다. 하지만 UILabel setLineBreakMode는 입니다. 그 후 UILabel setNumberOfLines이 작동하지 않습니다.새 NSAttributedString 다중 행

전 :

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

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

나는 전에 디스플레이 후 동일한되고 싶어요. 여러 줄을 표시하는 방법은 무엇입니까?

+0

많은 여기 찾기 수에서 작동합니다. 을 보셨습니까? – rbbtsn0w

답변

4

iOS 6에서는 lineBreakMode 속성이 더 이상 사용되지 않습니다. 단순히 상수의 이름을 변경했습니다. 이전 상수는 더 이상 사용되지 않지만 여전히 사용 가능합니다. 이전 iOS에 배포하는 경우에도 상수는 단지 enum 값이므로 새 상수를 사용할 수 있습니다. 이전 이름과 새 이름은 동일한 값을 갖습니다. 따라서 memoLabel.lineBreakMode = NSLineBreakByTruncatingTail으로 설정하십시오.

예제 코드는 특성이 지정된 문자열 관련 기능을 사용하지 않는 것으로 보입니다. 속성이 지정된 문자열이 필요하지 않은 경우 일반 문자열을 계속 사용하십시오. 즉 여전히 아이폰 OS 6

2

사용 NSLineBreakByTruncatingTail 대신 UILineBreakModeTailTruncation