私のアプリケーションでは、サブビューされたUIView(および他のいくつかの要素)を持つUIViewControllerがあります。私のdrawRect:
メソッドでは、DrawViewと呼ばれるUIViewの中で、テーブルグリッド型のものを描画し、グリッド上にCGPointの配列をプロットします。ユーザーが画面をタップすると、touchesBegan:withEvent:
が呼び出され、グリッド上の最も近い点がタッチされたことが確認され、drawRect:
メソッドがポイントを描画する配列にポイントが追加され、[self setNeedsDisplay]
が呼び出されます。ユーザーが画面上で指を動かすと、ポイントが最後の位置から変更されたかどうかがチェックされ、ポイントが更新され、必要に応じて[self setNeedsDisplay]
が呼び出されます。Core Graphics- drawRect:頻繁に呼び出されない
これはSimulatorでうまくいきます。しかし、実際のiPhoneで実行すると、非常にゆっくりと実行されます。指を動かすと、ドットを描くには時間がかかります。別のスレッドにポイントを配置する場所の計算を実行すると、パフォーマンスが向上することがあります。誰もがこれを知っている経験をしていますか?遅れを減らすための他の提案はありますか?
偉大な答え。しかし、どうやってそれをしますか?複数のサブレイヤがあるレイヤーまたは1つのビューを持つユーザー別のビュー –
@Sandroでも動作しますが、CFタイプ(UIImageとCGImageRefなど)ではなくObjCタイプを扱うため、ジェスチャ認識機能を追加する可能性があるため、おそらく 'CALayers'の代わりに' UIView'オブジェクトを使用します。 –
ありがとうございます。私は新鮮ですが、私はCALayerオブジェクトや複合ビューが何であるか全く分かりません。私は[AppleのCALayerのドキュメント](http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html)を見つけましたが、あなたが推奨する他のチュートリアルやドキュメントがありますこれらのことについて学習し、それらを使って描く方法 –