作者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/m.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