解决tableView/collectionView Cell 使用SDWebImage 时闪烁

解决tableView/collectionView Cell 使用SDWebImage 时闪烁

问题分析

tableView/collectionView Cell 使用SDWebImage 加载cell 中的网络图片时,会有闪烁发生。
经分析原因,是由于 cell 的重用机制,导致cell 在 Appear 的时候,首先显示的是原来的图片,然后再执行 SDWebImage 的加载图片。
SDWebImage 无论加载缓存图片或者网络图片都需要一定时间,但这个时间又很短,所以会出现闪烁的情况。
那么,我的方案就是针对这方面去解决问题的。

解决方案

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    CommonTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath];
    cell.imageV.image = [UIImage imageNamed:@"placeHolder"];
    [cell.imageV sd_setImageWithURL:[NSURL URLWithString:@"indexPathImageUrl"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
        cell.imageV.alpha = 0.0;
        [UIView transitionWithView:cell.imageV
                          duration:1.0
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^{
                            [cell.imageV setImage:image];
                            cell.imageV.alpha = 1.0;
                        } completion:NULL];
    }];
    return cell;
}

这里主要是这两行代码:

  • 1) cell.imageV.image = [UIImage imageNamed:@"placeHolder"];
    在cell 重用的时候,首先使用 placeHolder 直接替换掉原来的图片,形成占位图(这里直接用空图片也是可以的,比如nil,@"")。等于直接清除cell 的重用图,这样就不会出现原图了。

  • 2)cell TransitionCrossDissolve

[UIView transitionWithView:cell.imageV
                          duration:1.0
                           options:UIViewAnimationOptionTransitionCrossDissolve
                        animations:^{
                            [cell.imageV setImage:image];
                            cell.imageV.alpha = 1.0;
                        } completion:NULL];

TransitionCrossDissolve 就是系统默认的转场动画。让新图片替换原来的图片的过程中出现的是平滑的动画。这样就不是闪烁一下,而是整体的动画替换,这样效果就会好很多。
当然 duration 时间可以自定义的调整,我实际用的是0.35.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容