0

フォト アルバムの画像をアプリ ドキュメント ディレクトリに NSData として保存し、UITableView に表示しています。パフォーマンスに問題があります。画像をアプリディレクトリに保存するのに数秒かかります.TableViewにロードするよりも同じ問題があります. これは、画像を保存するための私のコードです:

//Convert UIImage to NSData
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];

//Save image to app documents directory
NSError *error;
[imageData writeToFile:fullImagePath options:NSDataWritingAtomic error:&error];

それがUITableViewにロードする方法です:

NSData *imageData = [NSData dataWithContentsOfFile:path];
UIImage *myImage = [UIImage imageWithData:imageData];

cell.imageView.image = myImage;

これらのパフォーマンスの問題の原因は何ですか? アプリ ドキュメント ディレクトリから画像を保存および取得する他の方法はありますか?

4

1 に答える 1

7

2 つのアプローチ:

まず、画像を保存する前に画像を縮小することを検討するか、テーブル ビューに表示するために追加の小さなコピーを保存することを検討してください。それはあなたがどれだけ良い画像を必要とするかによって異なります - おそらくテーブルビューはMBのデータを持つフルスケールの写真ほど大きくありません. 実際、適切にスケーリングすると、画像も見栄えが良くなります。これだけで遅延に対処できるはずです。

次に、画像を非同期でロードすることを検討してください。ダウンロードする画像の変更可能な配列を維持します。ダウンロードを実行し、終了時にテーブル ビューに通知するシングルトンを作成します。cell.imageView.image通知 (またはデリゲート) コールバックで設定します。

于 2013-02-28T21:30:20.880 に答える