iOS アプリの UICollectionView での画像キャッシュに SDWebImage を使用しています。
すべて問題ありませんが、ユーザーがコレクション ビューをすばやくスクロールすると、プレースホルダーがキャッシュされた画像に置き換えられる前に、常にほとんど一時停止します。これはキャッシュチェックによるものだと思います。ユーザーエクスペリエンスを向上させるために、画像が実際にキャッシュされたら、プレースホルダーではなく適切な画像をセルに表示したいと思います。キャッシュされた画像のローカル (デバイス) ファイルシステムのパスを取得してShowインスタンスに保存し、それを (存在する場合) プレースホルダーの代わりに使用できれば、これは簡単です。
成功ブロックをsetImageWithURLメソッドに渡す可能性があります。ただし、取得する唯一の引数はUIImageインスタンスです (実際には master ブランチには cached と呼ばれるBOOL変数も渡されます)。では、 UIImageインスタンスから画像のファイルシステム パスを直接取得する可能性はありますか? または、キャッシュされたインスタンスにその情報を渡すようにSDWebImageを変更する必要がありますか? または、先ほど説明した目標を達成するためのより良い方法はありますか?
私のショークラスにはimageURLがあり、ショーセルがSDWebImageを使用する方法は次のとおりです。
#import "ShowCell.h"
#import <SDWebImage/UIImageView+WebCache.h>
@implementation ShowCell
@synthesize imageView = _imageView;
@synthesize label = _label;
@synthesize show = _show;
- (void)setShow:(Show *)show
{
if (_show != show) {
self.label.text = show.title;
if (show.imageURL) {
[self.imageView setImageWithURL:[NSURL URLWithString:show.imageURL]
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
}
_show = show;
}
}
@end