我在 iOS 应用程序的UICollectionView中使用SDWebImage进行图像缓存。
一切都很好,但是,当用户在集合视图上快速滚动时,在将占位符替换为缓存图像之前总会有一点停顿。我相信这是由于缓存检查。为了更好的用户体验,一旦图像被实际缓存,我希望单元格显示正确的图像而不是占位符。如果我可以获得缓存图像的本地(设备)文件系统路径并将其存储在Show实例中,并使用它(如果存在)而不是我的占位符,这将很容易。
有可能将成功块传递给setImageWithURL方法但是,它获得的唯一参数是UIImage实例(实际上在 master 分支中也有一个名为cached的BOOL变量也被传递)。那么 - 是否有可能直接从UIImage实例获取图像的文件系统路径?或者我应该修改SDWebImage以便将这些信息传递给缓存的实例?或者有没有更好的方法来实现我之前描述的目标?
我的Show类有imageURL,下面是 show cell 如何使用 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