2011-09-27 5 views
0

저는 코코아를 처음 사용하고 사용자 정의 InspectorView을 프로그래밍하고 있습니다. 부모보기 (InspectorView)에는 여러 하위보기 (InspectorCategories)가 포함되어 있습니다.서브 뷰 크기가 변경되면 부모보기 크기 조정

카테고리 (하위보기)의 압축을 해제하면 부모의 크기를 재조정/재검토해야합니까? 자동 크기 조정 마스크를 통해 가능하지 않음을 알았습니다 - 정확합니까?

부모님보기에서 resizeSubviewsWithOldSize으로 시도했지만 하위보기의 크기를 조정할 때 전화하지 않습니다.

이 동작을 어떻게 수행 할 수 있습니까?

답변

0

아니요, 자동 마스크를 통해 수행 할 수 없습니다. 자동 크기 조정 마스크는 수퍼 뷰가 범위를 변경할 때보기의 크기가 조정되는 방식을 정의합니다.

서브 뷰는 슈퍼 뷰가 대리자 호출을 통해 필요한 크기를 알도록해야합니다. 그런 다음 수퍼 뷰는 자체와 하위 뷰의 크기를 조정해야합니다. 이 크기가 조정 된 서브 뷰 주위에 맞는 새로운 크기를 계산하도록

(a)는 부모 뷰에서 sizeThatFits: 메소드를 오버라이드 (override) :

+1

감사 대답. 매력처럼 작동합니다. – Razer

2

내가 당신이 원하는 무슨 생각을 달성하기 위해 두 부분이 있습니다.

(b) 하위 뷰에서 setFrame 재정의 방법 및 프레임 크기가 변경 한 결과, 아마도 같이 상기 수퍼 크기를 조정 [self.superview의 sizeToFit] 호출 다음 용

-(void)setFrame:(CGRect)newFrame 
{ 
    [super setFrame:newFrame]; 
    [self.superview sizeToFit]; 
} 
+0

이것은 UIView에 대한 좋은 접근 방법입니다. 그러나 NSView에는 그러한 메소드가 없습니다. – Davyd