これには本当にカスタム描画が必要ですか? drawRect を使用せずに、簡単に画像を円にクリップできます。
それなし-drawRect:
Core Animation を使用すると、レイヤーの角の半径を設定できます。円の中に画像を表示するだけの場合は、画像を正方形のフレームの画像ビューに配置し、画像ビュー レイヤーの角の半径をフレームの幅の半分に設定できます。
ユーザーがドラッグするたびに、画像ビュー レイヤーの境界と角の半径を変更できます。これにより、円が大きく/小さくなったように見えます。
カスタム描画が必要な場合
Core Graphics でのみ実行できるカスタム シャドウやブレンディングを行っている可能性があります。その場合、ユーザーが指をドラッグしている間にスケール変換を適用して画像を引き伸ばし、指が画面から離れたときにのみ再描画することができます。これははるかに安価であり、実装も非常に簡単です。スケール変換 ( CGAffineTransformMakeScale(xScale, yScale);
) を作成し、円を含むビューの変換として設定するだけです (これは、各円が独自のビューである場合にのみ機能します)。
注:追加のパフォーマンスが必要な場合は、コーナー半径アプローチを使用する場合でも、同じトリック (ドラッグ中のスケーリングと再描画) を使用できます。