我有一個自定義NSView,其中包含一個子視圖 - 爲了解決這個問題,頂級視圖只是充當一個容器,並自動調整大小以適應窗口。它的子視圖從窗口邊緣繪製一個10像素的插入矩形,除了底部,它應該被窗口剪切,直到它被調整大小以顯示整個矩形。但是,它並不像我打算的那樣工作,而是在其超視圖的高度比它小的時候縮小矩形的高度。我該如何避免這種情況,並讓它保持在適當的高度,而在超視圖較小時才剪輯?自定義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:'的位置和使用'[自定義]',但是,謝謝你讓我知道!這就說得通了。 – 2010-03-22 20:32:24
現在我已經在subview中使用'[self bounds]'而不是'dirtyRect',它可以工作,這對您描述要重繪的區域的'dirtyRect'的解釋是有意義的。那謝謝啦! – 2010-03-22 20:37:18
不客氣!很高興聽到它的工作。 – 2010-03-22 20:45:15