2013-02-14 51 views
0

無處不在互聯網上我可以讀取改變的NSView的背景顏色,你可以只覆蓋其方法的drawRect這樣的:drawRect是否真的改變了NSView的背景顏色?

- (void)drawRect:(NSRect)rect 
{ 
    [[NSColor yellowColor] set]; 
    NSRectFill(rect); 
} 

例如here

但是,在我的情況下,顏色繪製在視圖頂部(我不能再看到內容),這對我來說很合乎邏輯。 DrawRect應該繪製視圖,而不僅僅是背景。

我錯過了什麼?

回答

2

填寫完背景後,您應該致電[super drawRect:rect]。否則,你只需要替換超類實現中所繪製的所有東西。

+0

當然,假設有一個超類(即,帕特里克沒有直接子類NSView,而是子類化了NSView的其他子類)。 – 2013-02-14 22:08:49

+0

如果他直接對「NSView」進行分類,他不會首先觀察到內容消失的問題。 – omz 2013-02-15 01:00:32

+1

Docu說:「默認實現什麼也不做,子類應該重寫這個方法,如果他們做了自定義繪製的話。[...]如果你的自定義視圖是一個直接的NSView子類,你不需要調用super,對於所有其他視圖,在你的實現中的某個地方調用super,以便父類可以執行任何額外的繪圖。「 – Flori 2014-09-20 21:21:09

0

您引用的示例是在背景上方顯示視圖的子視圖。