[請益] 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