2012-03-24 3 views
1

私のアプリの小さな部分には、人々が画面上に描画して簡単なメモを取ることができるビューが含まれています。現在、タッチポイントを配列に保存してdrawRectにドットを接続することで、これを行います。私はこれがこれを行うための最良の方法ではないことを知っているが、これは私のアプリのほんの一部です。大きな配列ではなくタッチイベントから描画をコミットします

問題は、しばらくするとタッチポイントの配列がかなり大きくなり、パフォーマンスが低下するということです。

誰かが巨大なconnect-the-dotのゲームではなく、これを行うより良い方法を提案することができますか?私は各タッチで終わったと思うEndeedイベントは、私はどういうわけか、そのタッチ中に描画されたものを別の図面にコミットしてから、アレイをクリアする必要がありますが、どうしたらよいか分かりません。

答えて

0

CGMutablePath(またはUIBezierPath)のプロパティを保持してそれに追加します。大きなパスを作成するのは非常にコストがかかるので、間違いなくdrawRect:の内部で行う必要があります。非常に頻繁にパスを構築する必要がある場合は、1つの大規模パスよりもいくつかの小さなパスを持つ方が一般に安いです。

また、新しいパスを永続的なCGLayerにそれぞれ描画し、drawRect:に描画することもできます。これはあまり柔軟ではありませんが、固定メモリと処理要件があります。 contentsCALayerに更新すると、同様のことが実現できます。

関連する問題