我有一個自定義UIView這是一個UITableViewCell的子視圖。當單元格被繪製時,我的自定義視圖也正確地調用drawRect:在我的UIView子類中。當單元格重新加載時,視圖被正確繪製(調用drawRect:
)。爲什麼我調用setNeedsDisplay後,我的UIView子類不能重繪?
當某個事件發生時(例如計時器),我想重畫視圖而不必重新加載整個單元格。 (這不是單元格中的唯一視圖。)
但是,當我在我的子視圖上調用setNeedsDisplay
時,沒有任何反應。
我猜測,當我的觀點的drawRect:
被調用時,所產生的圖像在支持緩存的地方,這樣當我打電話setNeedsDisplay
是後盾重繪屏幕,但我drawRect:
呼叫不會被再次調用。
爲什麼drawRect:
在單元格創建後從未再次調用?
編輯:單元格的子視圖是從筆尖創建的。即:從筆尖加載UIViewController,並將其視圖添加到UITableViewCell。
我從零開始創建了一個自定義視圖(由代碼創建)的測試用例,它按預期工作:setNeedsDisplay
導致調用drawRect:
。它必須是在.xib文件中設置的東西,或者是從nib加載時發生的與視圖不同的事情。
你是否從主線程調用setNeedsDisplay?你確定你把它發送到正確的視圖(即如果從單元格完成,應該沒問題,但是當完成時可能很容易做錯*某個地方*單元已被替換(即通過滾動)。 – Eiko 2011-01-09 10:24:19