はい、Photos.app は低解像度の画像をキャッシュしています。良いニュースは、これらのキャッシュされたバージョンも取得できることです。ALAssetRepresentation の fullScreenImage プロパティと ALAsset のサムネイル プロパティについては、おそらく既にご存じでしょう。それらはロードがはるかに速くなるはずです。
私が高解像度画像で見つけたのは、それをロードするだけで1〜2秒かかる可能性があるということです.バックグラウンドで高解像度画像をロードするだけでうまくいくかもしれません.
では、画像の低解像度バージョンをロードしてから、i がある場合に高解像度バージョンに切り替える方法を教えてください。少し複雑かもしれませんが、うまくいけば、これで始められるはずです。AssetsLibrary を使用しているため、iOS 4 を使用する必要があります。これは、ブロックと GCD/libdispatch を使用してかなり簡単に実行できるため、朗報です。WWDC ビデオをご覧いただきありがとうございます。セッション 206 と 211 をチェックして、GCD に関する多くの有益な情報を入手してください。
基本的な考え方は、メイン スレッドで低解像度バージョンを表示し、バックグラウンド スレッドにフル解像度の画像をロードするように要求し、CATiledLayer にフル解像度の画像に切り替えるように指示するというものです。
- (void)displayAsset:(ALAssetRepresentation *)asset {
UIImage *lowresImage = [UIImage imageWithCGImage:asset.fullScreenImage
orientation:asset.orientation scale:asset.scale];
// Add code here to display the lowresImage
dispatch_async( dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0),
^ {
// Load the full resolution image from the asset
UIImage *highresImage = [UIImage imageWithCGImage:asset.fullResolutionImage
orientation:asset.orientation
scale:asset.scale];
// Once done, tell the main thread to display the tiles
dispatch_async( dispatch_get_main_queue(),
^ {
// Code to swap out the lowresImage for highresImage
});
});
}