tableview图片延迟加载的骚操作~

现在有这样一个场景,有一个tableview,每个cell上都有imageView,imageView要加载图片,用户在滑动列表的时候,如果随滑随加载图片的话,列表会非常卡顿,验证影响用户体验。这个时候应该怎么优化呢?

方法一:利用UIScrollView的代理方法。在tableView滑动的过程中不加载图片,等停止滑动时再加载当前可见cell上的图片。这种方法是比较容易想到的优化方式,但是实现起来比较麻烦,要判断是否拖动,是否正在减速等条件,要在多个方法中做相应的设置,具体细节实现网上也有很多,大家可以自行查找,不在这里赘述。这种虽然也能实现优化,但就是感觉非常的笨重,那有没有更简便的方法,答案当然是有,什么?你就想一行代码实现?哈哈,这个当然也是so easy!

方法二:利用runloop的特性。(五星推荐)

UIImage *cellImg = ...;
[self.imgView performSelector:@selector(setImage:) withObject:cellImg afterDelay:0 inModes:@[NSDefaultRunLoopMode]];

Runloop这个东西还是推荐学习一下的,研究runloop的过程中,会让我们对iOS的底层有更多的认识。当然runloop的内容比较多也比较抽象,这里推荐ibireme大神的文章,可以说是讲的非常深入,有兴趣的可以研究一下。等你看完整个runloop的原理,可以再来看这里的优化方式。
说回这种优化方式,它的意思就是将设置图片的操作放在Default Mode的runloop中,因为tableview在滑动时,所在的runloop的mode为UITrackingRunLoopMode,这是两种完全不同的Mode,且水火不容。滑动时,只会执行设置为UITrackingRunLoopMode的runloop,故而设置为NSDefaultRunLoopMode的runloop就不会执行,只有停止滑动的时候才会自动切换到NSDefaultRunLoopMode,这时就会去设置图片了。怎么样,这操作是不是有点厉害呢?

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值