2011-03-21 90 views
1

我有我的自定義NSView與一堆自定義按鈕,按鈕被添加爲NSView的drawRect方法中的子視圖。如何判斷是什麼原因導致drawRect被調用?

現在我發現,按下按鈕後,父視圖的drawRect被反覆調用。有時它只會在我退出應用程序時停止 - 我通過drawRect中的簡單日誌語句知道這一點。

現在我知道我的應用程序中可能存在更大的體系結構問題,導致該問題,我該從哪裏開始追蹤導致此視圖反覆重繪的原因?

謝謝!

回答

1

首先,您不應該在drawRect:中添加子視圖。

你在做任何自定義繪圖,或者你只是添加子視圖?如果你沒有做任何繪圖,你不應該實現drawRect:

您想在initWithFrame:中添加子視圖,然後根據self.bounds設置layoutSubviews中子視圖的框架。

如果您有任何問題,請隨時詢問。

編輯:剛纔意識到你問的是NSView而不是UIView。我從來沒有使用NSView,但也許他們的工作類似。

編輯2:我讀了一些關於NSView,它似乎並沒有layoutSubviews。也許你應該在drawRect:中設置幀?我仍然確定你不想在drawRect:中添加子視圖。

+0

非常好,謝謝你的回答 - 我沒有意識到我在濫用drawRect。我已經移動了子視圖的添加,並確保它只在必要時才被調用,現在一切正常。 – BenL0 2011-03-21 22:02:52

相關問題