2

次の場合に示すように、呼び出しsetNeedsDisplayた後に明示的に呼び出す必要がありますか?setFrameUIView

view1.frame = frame;
[view1 setNeedsDisplay];

[view2 setFrame:frame];
4

2 に答える 2

10

短い答え:いいえ

メソッドを呼び出すsetNeedsDisplay必要があるときに呼び出します.-drawRectUIView Class Reference

フレーム四角形を変更すると、drawRect: メソッドを呼び出さずにレシーバーが自動的に再表示されます。フレームの四角形が変更されたときに drawRect: メソッドを呼び出す場合は、contentMode プロパティを UIViewContentModeRedraw に設定します。

于 2013-04-11T22:35:21.100 に答える
0

答えは Yes と No の両方で、状況によって異なりますが、

ケース1。カスタム ビュー、つまり UIView のサブクラスで drawRect メソッドをオーバーライドして何かを描画している場合は、setNeedsDisplay を呼び出す必要があります。そうしないと、その描画またはパターンが新しいフレームに従って引き伸ばされ、見栄えが悪くなります。再描画する場合は、setNeedsDisplay を呼び出します。

ケース 2。せっかく描いた絵が伸びても綺麗に見えるものなら、稀にあると思いますが、

または、drawRect をまったくオーバーライドしない場合は、setNeedsDisplay を呼び出す必要はありません。

于 2013-06-13T09:24:32.133 に答える