[请益] cell需要网络载图,怎么用才顺

楼主: RINPE (RIN)   2017-07-09 21:55:21
最近遇到api会回传图片网址
我要再把他放在cell的imageVIew上
目前问题是,快速滑动停止时,
图片会很明显的从别张图,变回正确的图
复用?单纯网络问题还是两者都有?
不知道各位前辈怎么解决这种问题?
下载几个有用到tableView的感觉没这么明显
目前是想到先下载存起来,如果没有同名,才下载
或是直接把imageView改成webView
麻烦各位前辈给些建议了
题外话,最近在做另一个功能
但同事给的api要先连1拿到需要的资讯,
在连2而这个2还需要用循环跑5种不同的情况
最后才能比对1有2也有的显示出来,超麻烦的!!
难道就不能直接在2里把需要的资讯都存入就好吗
作者: Esvent (Esvent)   2017-07-09 22:04:00
在tableView:cellForRowAtIndexPath:里面要记得重置cell的所有内容至于cell抓图的问题 我自己通常都是准备一个NSCache放图cell加载的时候先检查cache 没有就先显示loading 然后抓图图抓完之后丢进cache 再通知tableView reload相关cell如果你的图片很大量的话 可以考虑进一步存进tmp or cache资料夹
作者: cryinglove (毓™)   2017-07-09 22:27:00
如果不想自己搞图片下载跟cache,可以找第三方,pinimage
作者: yuanruo (罪を憎んで人を憎まず)   2017-07-09 22:35:00
全部想自己刻的话,可以准备两个Dictionary一个是存图片,一个是存NSBlockOperation key都是网址一开始用key去抓image Dict中有没有图片~有->显示没有的话 在if下先判决operationDict 有没有值 也没有就用NSBlockOperation去抓图,完成把image和oper存进dict然后dispatchMainQueqe回去set Image如果上面oper取出有值,贴上placeholder,img有值 直接贴上api回来后,考虑img存到资料夹,最一开始判断两次有无值都完成了,就是一个简易版SDWebImage有1点写错oper存进dict要在NSBlockOperation的block外如果cell是custom可以覆写prepareForReuse中消除imgView
作者: Esvent (Esvent)   2017-07-09 23:01:00
提醒一下 Apple的文件有提到不建议使用prepareForReuse来重置cell的显示内容 建议在delegate方法里面重置
作者: uranusjr (←這人是超級笨蛋)   2017-07-09 23:08:00
后面那个问题去找写 API 的同事抱怨啊, 没什么好问的 XD
作者: sinss (星星)   2017-07-10 00:09:00
在prepareForReuse时清除之前的工作。
作者: tentenlee (天天)   2017-07-10 01:15:00
好sdwebimage不用吗....
作者: yuan0723 (PTT八卦婶)   2017-07-10 01:53:00
sdwebimage不错用
作者: G888888   2017-07-11 21:54:00
不能上架,那要做什么用的~@@
作者: ppppman (4pman)   2017-07-11 22:44:00
你几年换了几个工作啊......
作者: Blueshiva (龙野南云)   2017-07-11 23:13:00
可能是内部在用的吧
作者: tentenlee (天天)   2017-07-12 01:32:00
我做了一大堆不上架的app都是企业内部用的..
作者: howdiun (Howdiun)   2017-07-12 09:17:00
不上架很棒啊,可以使用private api做很酷的功能

Links booklink

Contact Us: admin [ a t ] ucptt.com