2009-08-12 11 views
0

写真のプレビューアプリケーションを作成しています。写真がいくつかあります。私が大量の画像を持っていなかったとき、すべてがうまくいった。アプリケーションはUIScrollViewを使用して、PageControlコードの例に基づいて画像を切り替えることができます。iPhone:写真をプレビューする

しかし、今、私はより多くの写真を追加し、私はそれにいくつかの問題を持っている - それはあまりにも多くのメモリを消費し、私のアプリは、アプリの警告を取得し、私は絵を切り替えたときに、それは遅すぎる取り組んで開始します。

大量の画像ファイルをサポートするためにビューアを最適化する方法はありますか?私はiPhoneの写真アプリケーションに似た何かを実現したい - 最初は、細かい画像がロードされており、詳細なメディアに切り替わり、最終的に詳細に切り替えるよりも。これはどのようにして行われていますか?

ありがとうございます。

答えて

3

、あなたのアプリケーションに複数の画像を追加したときに、メモリの問題は、ごく最近になって始まったならば、私はあなたが同時にアプリケーションにあなたのすべての画像をロードしているのどちらかという推測をハザードでしょうが(限られたメモリを食べるようになりますまたはアプリケーションにメモリがリークしている可能性があります。

あなたは同時にすべての画像をロードしている場合は、より効率的なアプローチは、現在のイメージをロードするようになり、そしておそらく画像が示す1の前と後に表示されます。これがすでに取っているアプローチの場合は、メモリーリークがないかどうかを確認してください。

画像に関しては、低解像度を開始し、次第に解像度が増加するにつれてより明確になるにつれ、私は、Appleがこれを行うために提供するものは何も認識していないが、達成するのはかなり簡単なプロセスでなければならない。画像のタイルを作成し、パン/スケーリングするときは代わりにタイルを使用します。動きが止まると、再び高解像度画像を表示します。 iPhoneの写真アプリは、このアプローチを取る

理由がありそうである2倍:パンと低解像度の画像をスケーリングするとき、最初のアプリケーションのパフォーマンスが良くなります。画像の移動をやめるときに高解像度の画像を見るだけで済みます。第2に、デバイス上のバッテリは、アプリケーションの動作が少ない場合(すなわち、高解像度画像ではなく、低解像度画像を常にパンニング/スケーリングする)、ヒットパワーが小さくなる。

0

一つの解決策は、おそらくあなたは、現在のページ、次のページ、前のページの画像を読み込むことを確認することです。この方法で大量の画像がある場合は、それらをすべて同時にメモリに保存しようとはしません。

低いディテールから高いディテールのエフェクトまで、私はAppleがどのようにしているかはわかりませんが、おそらくローディテールを読み込んでからスクロールビューの代理人に-scrollViewDidEndDeclerationgを呼び出すと、高解像度の画像は、人が十分に長く画像にとどまっている場合です。スクロールビューが再び動き始めると無効になります。

関連する問題