2012-02-24 2 views
0

서브 클래스가 이고 UI 뷰UILabel이고 뷰가 서브 뷰로 추가되었습니다. layoutSubviews 메서드에서 UILabel의 위치와 높이가 계산됩니다. 내 문제는 UILabel 텍스트가 바뀌면이 높이를 다시 계산해야한다는 것입니다. 텍스트는 UIViewController에서 레이블에 삽입되므로보기에서는 이러한 일이 언제 발생하는지 알 수 없습니다.UILabel의 텍스트가 변경 될 때 UIView를 다시 그리는 방법?

답변

1

이 같은 setText:을 무시 UILabel를 서브 클래 싱 할 수 있습니다

@implementation MyLabel 

- (void)setText:(NSString *)text { 
    [super setText:text]; 
    [self.superview setNeedsLayout]; 
} 
+0

하지 않는 매우 유연한 솔루션으로 보인다. 실제로 이미지를 바꿀 때 UIImageView의 크기를 다시 그리는 데 필요한 UILabel이 아닙니다. – dhrm

+0

'UILabel'과'UIImageView'는 콘텐츠가 변경 될 때 자동으로 크기를 조정하는 옵션이 없습니다. 당신은 크기를 바꾸라고 말해야합니다. 콘텐츠를 변경하는 코드 (장소가 많을 수도 있음)에서 수행하거나 하위 클래스를 만들 수 있습니다. –

관련 문제