1

私は現在、UITableViewに大きな画像を表示する必要があるプロジェクトに取り組んでいます。これは多くの開発者にとって非常に一般的な問題であり、次の手順に到達したスレッドで学習します。

注:私が参照する大きな画像は、すべて300x300px(600x600px、網膜)と約200kbのJPEGを持っています

  1. NSOperationQueue を作成します。
  2. 画像を非同期的にダウンロードします (各画像は 600x600px で、@2x 画像に対応します);
  3. 非網膜画像 (300x300px 画像) のサイズを変更して作成します。
  4. 両方の画像を解凍します。
  5. すべての画像を NSCache に保存します。

すべての手順が完了したら、メイン スレッドで UITableView を更新します。UITableViewCell サブクラスを使用して、必要なすべてのコンテンツを描画しています (Apple のサンプル コードで見られるように)。主な問題は、ステップ 4 について混乱していることです(画像を解凍する)、私の疑問:

注:現在、解凍した画像を NSCache に保存しています。

  • 画像を解凍して、UIImage または NSData として保存する必要がありますか?
  • 解凍した画像を保存するにはどうすればよいですか?(NSCache、NSMutableArray...)
  • 解凍した画像を UITableViewCell サブクラスに渡す最良の方法は何ですか?

注: ここに示す解凍コードを使用しています:リンク

4

1 に答える 1

2
  • オブジェクトを実際にディスクに保存することはできませんがUIImage、それをNSData使用して変換することはできますUIImagePNGRepresentation
  • UIImage を使用すると、すぐに使用できるキャッシュが得られます。これが最も効率的な方法だと思います。
  • 画像を UIImageView に入れるだけで、Apple は画像のレンダリングを高速化することに多くの時間を費やしました。

とは言っても、特に網膜デバイスの場合、画像は特に大きくありません。この問題に対する完全でテスト済みのソリューションを備えたAFNetworkingライブラリのようなものを見ることをお勧めします。

さらに、ダウンロード、保存、キャッシュ、再利用など、必要なことを正確に実行するAFImageRequestOperationのコードを検索できます。

于 2013-02-11T05:56:38.013 に答える