1

Web からダウンロードしたリンクに含まれるさまざまなサイズの画像を扱っている iOS アプリがあります。画像を保存する必要がないので、バックグラウンドで画像をキャッシュする UIImageView 拡張機能である EGOImageView を使用しています。これらの画像は UITableView にあります。これらはすべて、1000x1000 ピクセル未満の画像では完全に機能しますが、より大きな画像では問題になります。それらはバックグラウンドで正常にダウンロードされますが、キャッシュされた画像を UIImageViews 画像として設定するだけで、非常に大きな画像には非常に時間がかかるため、大きな画像が多数ある場合、Table View のスクロールが非常に途切れます。

私の質問は、これらの画像を UIImageView にロードするだけでメインスレッドに大きな負担がかからないようにするにはどうすればよいですか?

4

1 に答える 1

1

最近、これを回避する必要がありましたが、

私の解決策は非常に簡単でした。

  1. 画像 (AFNetworking) をダウンロードし、ドキュメント ディレクトリに保存します。
  2. スクロールするときの「サムネイル」バージョンを作成するために、画像のサイズを変更します (Core Graphics)。
  3. ユーザーがセルを押して画像を表示すると、大きな画像が表示されます。

AFNetworking を使用してイメージをディスクにダウンロードし、Core Graphics を使用してサイズを変更できます。私は NSOperation にまとめてキューに追加したので、UI がフリーズすることはありませんでした。

応答が遅いのは、これらの画像がメモリに保持されているためです。これは、小さなテーブルでは問題ありませんが、スケーラブルではありません。また、フェッチがメイン スレッドで行われていることが原因である可能性もあります。

これがあなたを正しい方向に導いたことを願っています。

https://github.com/AFNetworking/AFNetworking

CoreGraphics 画像のサイズ変更

于 2013-10-23T22:09:20.813 に答える