3
據我所知,調用setNeedsDisplay
將調用drawRect:
,但我想問什麼可能導致一個視圖調用setNeedsDisplay
(當然除非你想明確地調用它),例如,在UIView實現中,在什麼情況下drawRect被調用?
- 調整視圖調用
drawRect
本身?它的子視圖怎麼樣?
據我所知,調用setNeedsDisplay
將調用drawRect:
,但我想問什麼可能導致一個視圖調用setNeedsDisplay
(當然除非你想明確地調用它),例如,在UIView實現中,在什麼情況下drawRect被調用?
drawRect
本身?它的子視圖怎麼樣?只要需要重繪視圖,就會調用它。所以這將是當一個內部標誌設置,其中setNeedsDisplay
將設置。
當然,做其他事情可能會導致setNeedsDisplay
被調用。例如,如果你正在使用的UIViewContentModeRedraw
內容模式,然後按文檔:
UIViewContentModeRedraw
重新顯示視圖時通過調用setNeedsDisplay方法的範圍變化。
如果使用此內容模式,您會得到一個drawRect:
,發生在邊界更改後。
除此之外,我真的不能想到其他任何有調用setNeedsDisplay
副作用的方法,但可能會有更多。
感謝您的回答,但我仍然不知道什麼情況會使視圖重繪自己。調整視圖調用drawRect本身?它的子視圖怎麼樣?將視圖1px移動到左邊怎麼樣? – jasondinh 2012-02-23 10:01:04
「邊界改變時重新顯示視圖」 - 如果內容模式爲「UIViewContentModeRedraw」。這是您調整大小/移動的答案。至於子視圖 - 不,他們不會導致他們的父母需要重繪。 – mattjgalloway 2012-02-23 12:02:40
這是否意味着其他'contentMode'在尺寸改變時不會觸發'drawRect'?不好意思問這麼多問題,但我不太明白。 – jasondinh 2012-02-23 17:11:26