상당히 큰 폼을 포함하는 응용 프로그램이 있습니다. UILabel을 서브 클래스 화하여 양식 레이블에 일관성을 가질 수있었습니다. 그러나 레이블 중 일부는 배경색이있는 섹션 구분선이 될 것이며 들여 쓰기가 필요할 것입니다.iOS : UILabel의 서브 클래스 화 및 들여 쓰기 업데이트
는 나는이 코드를 사용하여 인스턴스화 할 때 내가 위로 UILabel의의 들여 쓰기 설정을 탈 수 있습니다 알고
- (void)drawTextInRect:(CGRect)rect {
UIEdgeInsets insets = {0, 5, 0, 5};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
하지만 라벨의 모든 세트를 추가합니다. 내가 원하는 건 아니야. 그와
- (void) makeInsets
{
CGRect rect = self.frame;
if (hasInset) {
UIEdgeInsets insets = {0, 5, 0, 5};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
} else {
UIEdgeInsets insets = {0, 0, 0, 0};
return [super drawTextInRect:UIEdgeInsetsInsetRect(rect, insets)];
}
}
문제가 UILabel의 그린 후 그런 일이있다 : 나는 정의 방법을 썼다 않았다 그래서
. [UILabelSubclass setNeedsDisplay:YES]
을 시도했지만 setNeedsDisplay
메소드의 "표시 할 인터페이스 없음"오류가 발생합니다. 기존의 인세 트를 커스텀 커스텀으로 오버 라이딩 할 수있는 방법이 있습니까?
내가 제공 한 것이 실제로 내 문제를 더 잘 해결할 수 있도록 bool 속성 (hasInset)을 전달하므로 선택한 대답을 제공 할 것입니다. 하지만 다른 사용자가 내 setNeedsDisplay 질문에 대답했습니다. 밀어 주셔서 고마워. – PruitIgoe
네, UILabel을 이미 서브 클래 싱 한 이후로 생각했습니다 ... 코드를 수정하지 않고 외부에서 setNeedsDisplay를 호출하지 않아도되는 이유는 무엇입니까? 이제보기 코드가 좀 더 읽기 쉽습니다 :) – jerrylroberts