如何每次从缓存加载UITableView或UICollectionView的图像

时间:2016-08-03 01:47:02

标签: ios iphone uitableview caching uicollectionview

每次刷新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时,它始终为零,这意味着它是从远程而不是从缓存下载的。

0 个答案:

没有答案