2013-05-13 59 views
-1

我想知道如何在不延遲用戶的情況下加載圖像。json解析並呈現後加載圖像

我一直在嘗試從網址加載圖片,出現視圖並顯示所有用戶信息,因此當用戶單擊按鈕時,視圖將毫無延遲地顯示出來。

感謝

回答

0

差不多你拿出任何解決方案將需要(即在背景中)異步加載圖像。我建議在你從JSON獲取URL的時候立即啓動一個後臺線程來加載圖像,這樣當用戶點擊按鈕顯示它時就會準備好。

我還建議做一些緩存,以便以前下載的圖像已經「在磁盤上」,不需要通過網絡來顯示。

Here's a sample project I did that displays how to load (and cache) images from URL's。這不是JSON,但它可能會幫助你。

+0

你能告訴我如何創建後臺線程或任何異步的方式來做到這一點? – slozano95 2013-05-13 01:21:10

0

使用NSURLConnection的做下載:

NSURLRequest* req = [NSURLRequest requestWithURL:url]; 
NSOperationQueue* q = [NSOperationQueue mainQueue]; 
[NSURLConnection sendAsynchronousRequest:req queue:q 
    completionHandler:^(NSURLResponse *resp, NSData *d, NSError *err) { 
     if (d) { 
      UIImage* im = [UIImage imageWithData:d]; 
      // do something with the image 
     } 
    }]; 

下載發生在後臺線程,因此用戶不被延遲以及(最重要的)主線程沒有被阻塞;但一旦下載完成,完成處理程序就發生在主線程上,因此現在可以安全地將圖像粘貼到您的界面或爲其設置屬性。

+0

該代碼以及更多詳細信息,包括有關下載和緩存圖像的一些細節,來自我的書:http://www.apeth.com/iOSBook/ch37.html#_http_requests – matt 2013-05-13 01:27:21