У меня есть собственный NSView, который содержит подпредставление - для решения этой проблемы представление верхнего уровня просто действует как контейнер и автоматически изменяет размеры, чтобы поместиться в окне. Его подпредставление рисует прямоугольник со вставкой в 10 пикселей от края окна, за исключением нижней части, которая должна обрезаться окном до тех пор, пока не будет изменен размер для отображения всего прямоугольника. Однако он не ведет себя так, как я намереваюсь, а вместо этого уменьшает высоту прямоугольника, когда его суперпредставление имеет меньшую высоту, чем оно. Как мне избежать этого, чтобы он оставался на своей правильной высоте и вместо этого был обрезан, когда суперпредставление меньше?
Код реализации родительского представления:
- (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;
}