每次刷新UITableView或UICollectionView时,我都在努力弄清楚如何从缓存加载图像。我已经尝试了6个不同的框架来加载和缓存图像,包括SDWebImage,DFImageManager等等,但没有结果。我甚至为所有图像添加了缓存标题,其中max-age为一年,甚至没有工作。无论我使用哪个框架,它只会从远程加载,而不是从缓存加载。但是在离线模式下运行应用程序时,图像会非常快速地显示出来。有什么东西我错过了吗?有关延迟加载的任何代码建议吗?
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(DiscoverCollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {
if (cell.merchant.image) {
cell.backgroundImageView.image = cell.merchant.image;
} else {
SDWebImageManager *manager = [SDWebImageManager sharedManager];
cell.imageOperation = [manager downloadImageWithURL:cell.merchant.imageUrl options:SDWebImageRefreshCached progress:nil completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
NSLog(@"%ld", (long)cacheType);
if (image) {
cell.backgroundImageView.image = image;
cell.merchant.image = image;
}
}];
} }
- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(DiscoverCollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath {
if (cell.imageOperation) {
[cell.imageOperation cancel];
}
cell.imageOperation = nil; }
我正在使用SDWebImage在willDisplayCell中执行下载。现在当NSLogging cacheType时,它始终为零,这意味着它是从远程而不是从缓存下载的。