2013-02-11 118 views
1

我目前正在處理一個項目,我需要在UITableView上顯示大圖像,這是很多開發人員和學習與他們的線程,我達到了以下過程很常見的問題:解壓縮圖像使用UITableView

注:大型圖片我是指,他們都有300x300px(600x600px,視網膜)和200KB左右,JPEG

  1. 創建NSOperationQueue;
  2. 異步下載圖片(每張圖片600x600px,對應@ 2x圖片);
  3. 調整並創建非視網膜圖像(300x300px圖像);
  4. 解壓縮兩個圖像;
  5. 將所有圖像存儲在NSCache上;

該程序已完成更新我使用的UITableViewCell子類來繪製所有我需要的內容主要thread.I'am的UITableView(如蘋果的示例代碼所示)。主要的問題是,我」畢竟米困惑第4步(解壓縮圖像),我的疑惑:

注意:我目前存儲在NSCache我解壓縮的圖像。

  • 我應該解壓縮圖像,然後存儲爲UIImage或NSData的? (NSCache,NSMutableArray ...)
  • 什麼是將解壓縮的圖像傳遞給我的UITableViewCell子類的最佳方式是什麼?

注:我使用的解壓縮代碼這裏介紹:link

回答

2
  • 你真的不能存儲的UIImage對象到磁盤,但你可以用它轉向NSDataUIImagePNGRepresentation
  • 使用UIImage會給你開箱即用的緩存,我敢打賭這是你可以獲得的最高效率
  • 只需將圖像放入UIImageView中,Apple就花費了大量的時間快速完成圖像渲染。

這就是說,你的圖像不是特別大,尤其是對視網膜的設備,我會建議在尋找的東西一樣,沒有爲這個問題的完整和測試的解決方案AFNetworking庫。

另外,你可以查看AFImageRequestOperation的代碼,它完全符合你的需求:下載,存儲,緩存,重用。

+0

好吧,我明白了你的觀點,但我已經嘗試過使用UIImageView,而事情變得越來越慢。正如你所說'蘋果花了很多時間讓圖像渲染快速',是的,這是真的,但我真的需要工作在圖像解壓縮,因爲作爲我的上下文需要我需要在'drawrect'上繪製圖像 – Mateus 2013-02-11 06:12:16

+0

當然,然後看看我鏈接的圖像下載操作的代碼,關鍵是一切運行在後臺,而只更新主線程完整的UIImage – 2013-02-11 06:15:02

+0

好的,我現在檢查一下,謝謝你的回答! – Mateus 2013-02-11 06:17:31