UIView のサブクラスで drawRect をオーバーライドする場合にのみ、setNeedsDisplay を呼び出す必要があります。これは基本的に、線、画像、または長方形のような形状など、画面上に何かを描画するカスタム ビューです。
したがって、この描画が依存するいくつかの変数に変更を加える場合は setNeedsDisplay を呼び出す必要があり、ビューがその変更を表すには、内部で drawRect を呼び出してコンポーネントを再描画するこのメソッドを呼び出す必要があります。
imageView または UIButton をサブビューとして追加するか、サブビューを変更する場合、このメソッドを呼び出す必要はありません。
例:
タッチして移動するか、タイマーベースのアニメーションである可能性がある、動く円を示すビューがあります。このためには、指定された中心と指定された半径で円を描くカスタム ビューが必要になります。これらは、中心を変更して円を移動したり、半径を大きくして円を大きくしたりするために変更されるインスタンス変数として保持されます。
この場合、これらの変数 (中心または半径) をループとタイマーで変更するか、または touchesEnded メソッドと touchesMoved メソッドで指で変更します。このプロパティの変更を反映するには、setNeedsDisplay を呼び出すこのビューを再描画する必要があります。