2011-11-15 20 views
1

私のアプリはスクリーンショットを取ります。私はあなたがそれらのスナップショットを巡回することを可能にするスクロールビューを持つメイン画面を持っています。問題は、スナップショットが多いほどビューが遅くなることです。スクロールビューで約15枚のスナップショットを取得することができます。私が表示している画像は実際のスクリーンショットのサイズのわずか1/3です。各スクリーンショットは、スクロールビュー上のUIImageViewです。ここでパフォーマンスを向上させると思っていますか?iOS画像パフォーマンス向上の提案を表示

+0

一度に表示する必要がある画像の数はいくつですか? また、「各スクリーンショットはスクロールビュー上の 'UIImageView'です」ということは、各UIImageViewが単一のスクロールビューの内側に置かれていることを意味しますか、それとも独自のスクロールビュー単一の外側スクロールビューに配置されますか? –

答えて

5

あなたができることは、遅延ロードを行うことです。 その時点で表示されている画像のみをそのビューにロードします。 一度スクロールすると古いイメージが解放され、新しいイメージがロードされます。画像をロードする

二つの方法:

[UIImage imageNamed:fullFileName] // caches the image 

か:

NSString *fileLocation = [[NSBundle mainBundle] pathForResource:fileName ofType:extension]; 
NSData *imageData = [NSData dataWithContentsOfFile:fileLocation]; 
[UIImage imageWithData:imageData]; 

か、最終的には:あなたがやっていることに最善依存しているソリューション

[UIImage imageWithContentsOfFile:path] // does not cache the image 

画像。 imageNamed:メソッドはイメージをキャッシュしますが、多くの場合、メモリ使用に役立ちます。たとえば、画像を10回ロードしてテーブルビューにテキストを表示すると、UIImageは10個の個別のオブジェクトを割り当てるのではなく、その画像の単一の表現をメモリに保持します。一方、非常に大きなイメージがあり、それを再使用していない場合は、データオブジェクトからイメージをロードして、完了後にイメージがメモリから削除されていることを確認してください。

巨大な画像がない場合は、遅延読み込みを使用している限り、キャッシュについては心配しません。問題が見つからない限り、メモリの改善は無視できるほど少ないコード行を選択します。

関連する問題