UIViewをサブクラス化し、touchesBegan、touchesMoved、touchesEnded、およびdrawRectメソッドをオーバーライドして、ユーザーが画面にタッチして描画できるアプリを作成しました。Quartz2Dライブラリを使用して描画を行っています。
touchesBegan、touchesMoved、およびtouchesEndedでは、タッチイベントの現在および以前の場所を追跡します。タッチが移動するたび、およびタッチが終了するたびに、下にある描画を保持するために、タッチの前と現在の位置を含む最小の長方形を使用してsetNeedsDisplayInRectを呼び出します。(すべての図面をレイヤーのように相互に追加してほしい。)
奇妙なアーティファクトに気づきました。別の図面と重なる図面を作成すると、QuartzはsetNeedsDisplayInRectに渡された長方形を再描画しますが、その長方形の下のすべてを消去します。
この問題はブレンディングモードが原因であると思われますが、さまざまなブレンディングモードを試してみたところ、うまくいかなかったようです。
基になるコンテンツを保持するパスを描画するにはどうすればよいですか?