当tableView reloadData时,UIImageView在cell中闪烁



我知道SDWebImage会在应用程序进入后台时清除内存缓存。当app进入前台,滚动tableView刷新,然后reloadData, imageView在cell中会闪烁,即使数据没有改变

[cell.toolsImageView sd_setImageWithURL:[NSURL URLWithString:toolsModel.iconUrl] placeholderImage:[UIImage imageNamed:@"morentu_circle"] options:SDWebImageRetryFailed];

除了判断模型变化之外,还有其他方法可以避免闪烁吗?

reloadData:

  1. 加载磁盘映像

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock {
    [self sd_cancelCurrentImageLoad];
    NSURL *oldURL = [self sd_imageURL];
    objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
    if (!(options & SDWebImageDelayPlaceholder) && (oldURL == nil || ![oldURL.absoluteString isEqualToString:url.absoluteString])) {
        dispatch_main_async_safe(^{
            self.image = placeholder;
        });
    }
    ......
}

最新更新