2015-01-23 2 views
0

UIView 하위 클래스가 제약 조건을 사용하여 프로그래밍 방식으로 레이아웃되어 있고 여러 줄의 레이블이 포함되어있는 경우 임의의 너비가 지정된 경우 해당 뷰의 필수 높이를 어떻게 계산할 수 있습니까?AutoLayout의 제한보기에 높이를 묻는 방법이 있습니까?

나는 systemLayoutSizeFittingSize: 메소드를 알고 있지만 특정 폭이 아닌 UILayoutFittingCompressedSize과 같은 것을 기대합니다. 나에게 다른 높이를 제공하지 않으면 어떻게 정확한 높이나 너비를 반환 할 수 있습니까?

+0

레이아웃을 완료 한 후에 결과 높이를 매우 쉽게 얻을 수 있지만 제약 조건을 사용하는 경우 레이아웃 전에 높이를 계산해야하는 이유는 무엇입니까? – Ben

+0

뷰를 tableHeaderView로 사용하려고합니다. 프레임없이 설정하고 단지 크기를 얻기 위해 레이아웃을 강제 실행하는 것을 피하기를 원합니다. 그 크기를 적용하고 tableHeaderView를 다시 설정하십시오. –

+0

구체적으로 - http://stackoverflow.com/a/28102157/225253 –

답변

1

아는 한, 각 라벨의 크기를 개별적으로 계산해야합니다. 단일 멀티 라인 레이블의 크기를 계산하려면 트릭을 사용해야합니다.

CGSize boundingRectSize = CGSizeMake(widthToConstrainTo, CGFLOAT_MAX); 
NSDictionary *attributes = @{NSFontAttributeName : [UIFont fontWithName:fontName size:fontSize]}; 
CGRect labelSize = [labelString boundingRectWithSize:boundingRectSize 
              options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading 
              attributes:attributes 
              context:nil]; 
관련 문제