你必須顯式調用setNeedsDisplay
如在下列情況下,呼籲UIView
setFrame
後?你是否必須在UIView上調用setFrame之後顯式調用setNeedsDisplay?
view1.frame = frame;
[view1 setNeedsDisplay];
[view2 setFrame:frame];
你必須顯式調用setNeedsDisplay
如在下列情況下,呼籲UIView
setFrame
後?你是否必須在UIView上調用setFrame之後顯式調用setNeedsDisplay?
view1.frame = frame;
[view1 setNeedsDisplay];
[view2 setFrame:frame];
簡短的回答:沒有
你叫setNeedsDisplay
當你需要方法drawRect
被調用,並根據UIView Class Reference
.-
自動更改邊框矩形重新顯示接收機 而無需調用drawRect:方法。如果您希望的drawRect:當框架矩形的變化,contentMode 屬性設置爲UIViewContentModeRedraw 方法調用。
答案是Yes和No兩個,視情況而定,
案例1。如果通過覆蓋 定製視圖(即UIView的子類)中的drawRect方法來繪製某些東西,則需要調用 setNeedsDisplay,否則該繪圖或該模式將根據新框架拉伸,並且看起來很糟糕。 如果你想重繪它,請調用setNeedsDisplay。
案例2。如果你正在 畫我認爲這是一個難得的可能性東西,將看起來很好,即使它被拉伸, ,
或者不重寫的drawRect可言,那麼你就不需要請致電 setNeedsDisplay。
不完全正確,所有子視圖'拉伸'只會基於contentMode設置(默認情況下在大多數情況下設置爲縮放)。然而,'UIViewcontentModeRedraw'意味着如果視圖的實際邊界發生變化,您將不需要調用setNeedsDisplay,因爲它會代表您調用setNeedsDisplay。 – strange
但'setNeedsDisplay'電話後,每'setFrame'和'.frame ='等於'contentMode = UIViewContentModeRedraw'? – Dmitry
不完全:'UIViewContentModeRedraw 重新顯示時通過調用setNeedsDisplay method.' bounds屬性的邊界變化不等同於幀中的圖。 – ssantos
謝謝,'setFrame'完全等價於'.frame'嗎? – Dmitry