作者RINPE (RIN)
看板MacDev
标题[请益] cell需要网路载图,怎麽用才顺
时间Sun Jul 9 21:55:21 2017
最近遇到api会回传图片网址
我要再把他放在cell的imageVIew上
目前问题是,快速滑动停止时,
图片会很明显的从别张图,变回正确的图
复用?单纯网路问题还是两者都有?
不知道各位前辈怎麽解决这种问题?
下载几个有用到tableView的感觉没这麽明显
目前是想到先下载存起来,如果没有同名,才下载
或是直接把imageView改成webView
麻烦各位前辈给些建议了
题外话,最近在做另一个功能
但同事给的api要先连1拿到需要的资讯,
在连2而这个2还需要用回圈跑5种不同的情况
最後才能比对1有2也有的显示出来,超麻烦的!!
难道就不能直接在2里把需要的资讯都存入就好吗
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 115.43.186.170
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1499608524.A.0DD.html
1F:→ Esvent: 在tableView:cellForRowAtIndexPath:里面要记得重置cell的07/09 22:04
2F:→ Esvent: 所有内容07/09 22:04
3F:推 Esvent: 至於cell抓图的问题 我自己通常都是准备一个NSCache放图07/09 22:13
4F:→ Esvent: cell载入的时候先检查cache 没有就先显示loading 然後抓图07/09 22:14
5F:→ Esvent: 图抓完之後丢进cache 再通知tableView reload相关cell07/09 22:15
6F:→ Esvent: 如果你的图片很大量的话 可以考虑进一步存进tmp or cache07/09 22:18
7F:→ Esvent: 资料夹07/09 22:18
8F:→ cryinglove: 如果不想自己搞图片下载跟cache,可以找第三方,pinima07/09 22:27
9F:→ cryinglove: ge07/09 22:27
10F:推 yuanruo: 全部想自己刻的话,可以准备两个Dictionary07/09 22:35
11F:→ yuanruo: 一个是存图片,一个是存NSBlockOperation key都是网址07/09 22:36
12F:→ yuanruo: 一开始用key去抓image Dict中有没有图片~有->显示07/09 22:36
13F:→ yuanruo: 没有的话 在if下先判决operationDict 有没有值 也没有07/09 22:37
14F:→ yuanruo: 就用NSBlockOperation去抓图,完成把image和oper存进dict07/09 22:38
15F:→ yuanruo: 然後dispatchMainQueqe回去set Image07/09 22:39
16F:→ yuanruo: 如果上面oper取出有值,贴上placeholder,img有值 直接贴上07/09 22:40
17F:→ yuanruo: api回来後,考虑img存到资料夹,最一开始判断两次有无值07/09 22:42
18F:→ yuanruo: 都完成了,就是一个简易版SDWebImage07/09 22:42
19F:→ yuanruo: 有1点写错oper存进dict要在NSBlockOperation的block外07/09 22:43
20F:→ yuanruo: 如果cell是custom可以覆写prepareForReuse中消除imgView07/09 22:49
21F:→ Esvent: 提醒一下 Apple的文件有提到不建议使用prepareForReuse来07/09 23:01
22F:→ Esvent: 重置cell的显示内容 建议在delegate方法里面重置07/09 23:02
23F:→ uranusjr: 後面那个问题去找写 API 的同事抱怨啊, 没什麽好问的 XD07/09 23:08
24F:推 sinss: 在prepareForReuse时清除之前的工作。07/10 00:09
25F:推 tentenlee: 好sdwebimage不用吗....07/10 01:15
26F:推 yuan0723: sdwebimage不错用07/10 01:53
感谢各位 最後用cache来储存,就可以了
题外话,做一个不能上架的App
越来越没动力...... 虽然没有专案压力,但有股想换工作的心情
※ 编辑: RINPE (115.43.186.170), 07/11/2017 21:17:57
27F:推 G888888: 不能上架,那要做什麽用的~@@ 07/11 21:54
28F:推 ppppman: 你几年换了几个工作啊...... 07/11 22:44
29F:推 Blueshiva: 可能是内部在用的吧 07/11 23:13
30F:推 tentenlee: 我做了一大堆不上架的app都是企业内部用的.. 07/12 01:32
31F:推 howdiun: 不上架很棒啊,可以使用private api做很酷的功能 07/12 09:17