서브 뷰가 포함 된 사용자 정의 NSView가 있습니다.이 문제를 해결하기 위해 최상위 레벨보기는 단순히 컨테이너 역할을하며 자동으로 크기가 조정됩니다. 창문. 하위 뷰는 창 가장자리에서 10 픽셀 씩 삽입 된 사각형을 그립니다. 하단을 제외하고 전체 사각형을 표시하기 위해 크기가 조정될 때까지 창에 의해 잘 리게됩니다. 그러나 의도 한대로 동작하지 않고 수퍼 뷰의 높이가 높이보다 작 으면 사각형의 높이를 줄입니다. 어떻게 이것을 피하고 적절한 높이에 머무르게하고 superview가 더 작을 때 잘리는가?사용자 정의 NSView의 서브 뷰가 슈퍼 뷰에 맞게 크기 조정됩니다.
부모 뷰의 구현 코드는 다음과 같습니다
- (id)initWithFrame:(NSRect)frameRect {
self = [super initWithFrame:frameRect];
if (self) {
subView = [[SubView alloc] initWithFrame:frameRect];
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect {
[[NSColor grayColor] set];
[subView setFrame:NSMakeRect(10, 10, dirtyRect.size.width - 20, 500)];
[self addSubview:subView];
}
- (BOOL)isFlipped {
return YES;
}
그리고 서브 뷰는 다음과 같습니다
는- (void)drawRect:(NSRect)dirtyRect {
[[NSColor blackColor] set];
[NSBezierPath strokeRect:dirtyRect];
}
- (BOOL)isFlipped {
return YES;
}
ericgorr의 답변에 대한 답변에서 언급했듯이 autoResizingMask를 사용하여 작동시키지 못했습니다. 'addSubview :'의 배치와'[self bounds]'를 사용하는 것에 대해, 저에게 알려 줘서 고마워요! 그건 의미가 있습니다. –
이제 서브 뷰에서'dirtyRect' 대신에'[self bounds]'를 구현 했으므로, 다시 그릴 영역을 설명하는'dirtyRect'에 대한 설명에 비추어 볼 때 적절합니다. 감사합니다! –
당신을 진심으로 환영합니다! 그것을 듣고 기쁘다 일했다. –