比如新闻列表tableview,每个cell都有图片,从cell[0]滑到cell[40]时要经过cell[20],只是经过,最后停下来时cell[20]不在屏幕内。那么 cell[20]的图片应该不需要下载?怎么做到?
我的思路是:delay加载,但这样体验会不会不好?
我的思路是:delay加载,但这样体验会不会不好?
解决方案 »
- iphone导航栏的title可以点击
- iphone 通过safari获取本机号码
- 流量压缩软件的流量统计原理
- 问一个sqlite3语句
- 有没有人用过yahoo汇率api,AFNetworking解析错误,在线求助!!!
- tableview 自定义cell 点击cell改变cell中的label.text的字体颜色,cell复用出现问题
- UiviewWeb 里 网页 返回的问题
- 【求助】cocos2dx 用命令行创建工程,只创建部分文件,非完整工程!
- IOS上下载的WEBP图片打不开
- iOS RSA加密取值为NULL
- iOS NSAutoLayout
- UIAlertController 中的message中的内容如何设置文本居左显示
我的思路是通过scrollview停止滚动的代理方法来控制加载图片,停止滚动时加载此时可视cell的图片
之前忘了问你有没有用第三方的异步图片加载框架,如SDWebImage,不过话又说回来,用不用关系也不大。我之所以认为没有必要,是有三个原因,一是从体验上,你下载的图片肯定是要经过缓存的,既然缓存到本地了,就算这次用不到下次也能用到,对用户来说,他滑动tableView的时候就能看到图片是很爽的;二是从技术上,一个新闻缩略图能有多大?你还担心当前下载的图片过多,导致当前屏幕内的图片显示太慢?而且有一点很重要,UITableViewCell是被UITableView复用的,也就是说你在cell获取到ImageView和不在屏幕中显示的某一个ImageView是同一个,它在下载的同时会取消上一次的下载,这样一来就能保证屏幕中的cell总是在下载当前屏幕需要显示的图片(SDWebImage也会在下载的同时取消上一次的下载任务),所以不需要你去手动取消;三是从逻辑上,你如果要手动取消一次下载任务,逻辑是很复杂的,TableView的contentOffset在实时变化,需要显示的cell也是实时变化,你没有一个很好的时机去判断取消哪个,cell的willMoveToWindow也不一定会执行,因为TableView很可能只是更新了它的frame,然后你可能会想到layoutSubviews方法总之,我觉得没有必要