我有一個表視圖,它可能顯示數百個圖像縮略圖。我遇到的問題是快速滾動時的滯後。Lazy在UITableView中加載LOCAL圖像
我見過很多關於延遲加載遠程圖像的教程,但沒有用於本地圖像的教程。
有沒有人有任何建議或例子,我可以如何提高用戶界面的速度與加載許多圖像。
感謝
丹恩
我有一個表視圖,它可能顯示數百個圖像縮略圖。我遇到的問題是快速滾動時的滯後。Lazy在UITableView中加載LOCAL圖像
我見過很多關於延遲加載遠程圖像的教程,但沒有用於本地圖像的教程。
有沒有人有任何建議或例子,我可以如何提高用戶界面的速度與加載許多圖像。
感謝
丹恩
當你有遠程圖像通常你安排一個異步網絡調用,需要時間來完成,這通常不具備令人耳目一新的表視圖由於該網絡的影響作業是在一個單獨的線程上完成的(除非你排隊幾百個網絡調用,這將減慢整個系統!) 當你使用本地圖像時,通常你會直接在表視圖數據源
tableView:cellForRowAtIndexPath:
中從文件系統加載圖像一旦需要顯示一個新的單元格,就由該表執行。因此,在本地存儲圖像時,您很想嘗試在主線程中立即加載圖像,這會導致滾動問題。
但UITableView的是一個UIScrollView子類,然後將其響應UIScrollViewDelegate消息check this stackoverflow answer。因此,通過適當監控這些方法(例如加速/減速和拖動方法),您可以微調圖像加載。這意味着當表格全速滾動時,不建議加載任何圖像,但表格儘快不滾動,或正在減速,或者只是拖動(觸摸),您可以嘗試加載圖像。通常情況下,關鍵事件是用戶結束拖動並且滾動速度達到其最大速度時(對此有一個委託方法)。您應該仔細研究和理解這些方法,因爲它們允許您仔細跟蹤滾動事件,並根據它們進行實驗並對圖像加載進行微調。
另一項建議是,一旦從文件系統加載您緩存圖像(使用系統緩存或你的一些緩存;!在這種情況下,要注意與記憶警告)。一旦出現內存警告,您將能夠釋放此緩存,因爲所有圖像已被表格視圖單元保留。
請參閱本http://www.icodeblog.com/2010/03/04/iphone-coding-turbo-charging-your-apps-with-nsoperation/這並不特別是要滿足的圖像,但解釋如何執行任務在後臺。 –