指を使って簡単な図を描くアプリケーションを書いています。ほとんどの部分で機能していますが、現在はパフォーマンスを最適化しようとしています。ユーザーが指をすばやくスワイプすると、スムーズなパスを描画するのに十分なタッチイベントをキャプチャできません。
これが私の現在のアプローチです:
1)UIViewをサブクラス化し、CGLayerにポロパティを追加しました(遅延して作成され、UIViewと同じサイズです)。2)私のUIViewサブクラスは、現在および最後のタッチポイントをインスタンス変数に格納することによってタッチイベントに応答します。3)ビューのsetNeedsDisplayが呼び出され、描画長方形で次の手順を実行します。-前のタッチ位置から現在のタッチ位置への線をCGLayerに描画します-CGLayer全体をビューコンテキストに一度に描画します
主な問題は、ユーザーが高速でスワイプするとタッチイベントが比較的少なくなるため、タッチ間に描画する線が長くなり、パスがギザギザに見えて滑らかにならないことです。
私の質問:
1)drawRect(UIViewサブクラス上)とUIViewサブクラス上のタッチイベントハンドラーは同じスレッドで呼び出されますか?つまり、スレッドを実行する必要がありますか(1つはタッチイベントで、2つ目は描画長方形で)?
いいえの場合-drawRectが呼び出されている間、タッチイベントはキューに入れられますか?そして、どうすればパフォーマンスを向上させることができますか?単にdrawRectのパフォーマンスを向上させるだけですか?
はいの場合-よりスムーズなパスを描画できるように、タッチイベントをさらに発生させるにはどうすればよいですか?
ありがとう。