2012-01-31 167 views
0

我有幾個問題關於加載圖像到tableviews;我正在使用ASIHTTPRequest異步加載圖像到桌面

1.)我有一個tableview,我需要加載圖像到它。我有大小爲100KB,180KB,450KB和2MB的圖像。我知道這些圖像太大了,但我無法控制這個。我被迫在tableview中加載這些圖像。當我這樣做時,會減慢滾動速度,並減慢從視圖切換到視圖的速度。那我該如何預防呢?任何解決方案

2.)目前我正在使用SDWebImage,我對這個庫不滿意,因爲它減慢了滾動等(即使我使用的圖像小於110kb)我需要一個可以執行更快動作的庫?

回答

1

在顯示圖像之前,您可能必須在後臺將圖像下采樣到圖像視圖大小。它肯定會耗費你大量的CPU週期,但會加速滾動。我推薦使用ImageIO框架,因爲它在非主線程中沒有問題。

+0

這是最好的方法嗎?你可以發佈一個鏈接到一個使用ImageIO框架的示例項目,所以我可以更好地展現它。 – Illep 2012-01-31 18:10:45

+1

http://www.cocoabyss.com/coding-practice/uiimage-scaling-using-imageio/ – 2012-01-31 18:16:19

+1

這可能不是您的特定情況下的最佳方法,但您應該試試看它對您的工作效果如何:http://stackoverflow.com/questions/5860215/resizing-a-uiimage-without-loading-it-entirely-into-memory – Costique 2012-01-31 18:16:48

0

我不認爲它是SDWebImage,正在減慢你的向下滾動。 SDWebImage在一個單獨的線程中下載圖像,它唯一真正在主線程上做的事情就是將圖像放在UIImageView中,並且必須在主線程上完成。我在幾個不同的UITableViewCell中使用SDWebImage,並且我已經能夠實現平滑滾動。

2mb真的很大 - 您無法將該圖像加載到UITableViewCell中而不會看到一些混亂。事實是,UIImageView需要一些時間來渲染該圖像。

如果我是你,我會通過Time Profiler工具運行你的應用程序,看看你能確定哪些代碼行最長時間運行在你的UITableView或你的UITableViewCells中。

+0

是的,我會嘗試你的建議。你能告訴我一個允許的圖片的最大尺寸(最好的選擇)在tableView中顯示嗎? – Illep 2012-01-31 17:52:54

+0

我不能告訴你最大尺寸,你必須使用試驗和錯誤來弄清楚。越小越好! – 2012-01-31 18:01:29