iOS 滑过的图片怎么取消下载?

zioc2014 2014-12-18 04:44:58
比如新闻列表tableview,每个cell都有图片,从cell[0]滑到cell[40]时要经过cell[20],只是经过,最后停下来时cell[20]不在屏幕内。

那么 cell[20]的图片应该不需要下载?怎么做到?


我的思路是:delay加载,但这样体验会不会不好?
...全文
196 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Bannings 2015-01-20
  • 打赏
  • 举报
回复
引用 5 楼 zioc2014 的回复:
[quote=引用 2 楼 zhanglei5415 的回复:] 加载网络图片可以另开一个线程,异步加载。不然肯定会卡顿,用户体验不好。异步加载网络图片时,可以先预设一个placeholder image (占位图片),不会存在体验度不好的情况,反而是优化了用户体验。
你的回答和我的提问不符合啊
引用 4 楼 zhangao0086 的回复:
其实没必要取消,用户还是会滑过来的。再者,如果图片已经下载了一部分,那取消后下次又要重新下载。最多去SDWebImageDownloader里设置下并发下载数就好了
为什么没必要?[/quote] 之前忘了问你有没有用第三方的异步图片加载框架,如SDWebImage,不过话又说回来,用不用关系也不大。我之所以认为没有必要,是有三个原因,一是从体验上,你下载的图片肯定是要经过缓存的,既然缓存到本地了,就算这次用不到下次也能用到,对用户来说,他滑动tableView的时候就能看到图片是很爽的;二是从技术上,一个新闻缩略图能有多大?你还担心当前下载的图片过多,导致当前屏幕内的图片显示太慢?而且有一点很重要,UITableViewCell是被UITableView复用的,也就是说你在cell获取到ImageView和不在屏幕中显示的某一个ImageView是同一个,它在下载的同时会取消上一次的下载,这样一来就能保证屏幕中的cell总是在下载当前屏幕需要显示的图片(SDWebImage也会在下载的同时取消上一次的下载任务),所以不需要你去手动取消;三是从逻辑上,你如果要手动取消一次下载任务,逻辑是很复杂的,TableView的contentOffset在实时变化,需要显示的cell也是实时变化,你没有一个很好的时机去判断取消哪个,cell的willMoveToWindow也不一定会执行,因为TableView很可能只是更新了它的frame,然后你可能会想到layoutSubviews方法。。。总之,我觉得没有必要
zioc2014 2015-01-20
  • 打赏
  • 举报
回复
引用 2 楼 zhanglei5415 的回复:
加载网络图片可以另开一个线程,异步加载。不然肯定会卡顿,用户体验不好。异步加载网络图片时,可以先预设一个placeholder image (占位图片),不会存在体验度不好的情况,反而是优化了用户体验。
你的回答和我的提问不符合啊
引用 4 楼 zhangao0086 的回复:
其实没必要取消,用户还是会滑过来的。再者,如果图片已经下载了一部分,那取消后下次又要重新下载。最多去SDWebImageDownloader里设置下并发下载数就好了
为什么没必要?
Bannings 2014-12-23
  • 打赏
  • 举报
回复
其实没必要取消,用户还是会滑过来的。再者,如果图片已经下载了一部分,那取消后下次又要重新下载。最多去SDWebImageDownloader里设置下并发下载数就好了
程老师2088 2014-12-23
  • 打赏
  • 举报
回复
版主说得对。用SDWebImage可以很简单就做到,加上图片的链接和占位图片好了,其他都不用考虑。
ReyZhang 2014-12-20
  • 打赏
  • 举报
回复
加载网络图片可以另开一个线程,异步加载。不然肯定会卡顿,用户体验不好。异步加载网络图片时,可以先预设一个placeholder image (占位图片),不会存在体验度不好的情况,反而是优化了用户体验。
不担心 2014-12-18
  • 打赏
  • 举报
回复
tableview是继承自uiscrollview的 我的思路是通过scrollview停止滚动的代理方法来控制加载图片,停止滚动时加载此时可视cell的图片

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧