2013-03-01 3 views
12

고정 폭과 주어진 텍스트로 된 UILabel의 줄 수는 어떻게 계산합니까? 당신은 라벨의 높이가되면 다음 fontsize은 당신이 사용하는 크기는 글꼴 크기와 행의 수를 확인 constrainedSize고정 너비로 ​​UILabel의 줄 수는 어떻게 계산합니까?

CGSize labelSize = [label.text sizeWithFont:label.font 
          constrainedToSize:label.frame.size 
           lineBreakMode:UILineBreakModeWordWrap]; 
CGFloat labelHeight = labelSize.height; 

를 사용하여 라벨 크기에서 레이블의 높이를 얻을

+0

http://stackoverflow.com/questions/4172615/how-to-find-uilabels-number-of-lines – Sunkas

+0

이미 시도했지만 작동하지 않습니다. – Alexis

답변

38

이 코드는 label에 원하는 텍스트가 있고 해당 프레임이 이미 원하는 너비로 설정되어 있다고 가정합니다.

- (int)lineCountForLabel:(UILabel *)label { 
    CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); 
    CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; 

    return ceil(size.height/label.font.lineHeight); 
} 

업데이트 : 당신이 원하는 모든이 텍스트와 현재 폭에 따라 라벨에 필요한 높이를 결정하는 경우

, 다음으로 변경이 :

- (CGSize)sizeForLabel:(UILabel *)label { 
    CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); 
    CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; 

    return size; 
} 

반환 size은 레이블을 포함 할 적절한 너비와 높이입니다.

+0

회선 수 계산에 대한 질문. 당신은 정말로 필요한 높이 (포인트)를 원한다고 말하는 것입니까? – rmaddy

+0

당신이 줄 수를 썼을 때 높이를 lineHeight로 나눈 것과 같습니다. 실제로 너비를 고정 된 상태로 유지하면서 레이블의 정확한 높이를 계산하기 위해 줄 수를 알고 싶었습니다. – Alexis

+0

실제로 솔루션은 잘 작동합니다. 감사! – Alexis

4

먼저 당신의 상표. 있는 NSString에 방법 : constrainedToSize : 예 : 그것은 당신이 sizeWithFont를 사용하여 문자열을 표시하는 데 필요한 수직 높이를 계산할 수 있습니다 귀하의 요구 사항

CGSize sizeOfText = [label.text sizeWithFont:label.font 
         constrainedToSize:label.frame.size 
          lineBreakMode:UILineBreakModeWordWrap]; 
int numberOfLines = sizeOfText.height/label.font.pointSize; 
+0

너비는 어떻게 수정합니까? – Alexis

+0

fontSize로 나누는 것이 좋습니다. 감사합니다. –

+2

iOS 7에서 사용 중지됨 –

-1

에 10 따라 수 있습니다. 크기가 주어지면 전체 문자열을 표시하도록 레이블의 크기를 조정할 수 있습니다.

관련 문제