2012-04-30 50 views
2

我是iOS開發新手,請耐心等待。 我正在使用表格視圖和滾動視圖製作照片網格。 我的問題是,如何加載活動指示器,直到從服務器下載圖像,然後顯示圖像並刪除活動指示符?設置活動指示器,直到從服務器加載圖像爲止?

我試圖遠離第三方庫,因爲我想了解它是如何工作的。

+0

您應指定你怎麼從服務器獲取圖像。如果它使用的是nsconnection,則其中一個代表具有收到的響應委託方法。 – Pochi

回答

4

在您的視圖中放置一個活動指示器(通過Interface Builder或手動)。將該屬性設置爲「不動畫時隱藏」。

在進行服務器調用時,調用[activityIndi​​cator startAnimating](IBOutlet屬性)。 用實際圖像返回時,請調用[activityIndi​​cator stopAnimating]。停止時,它會自動隱藏。

您還可以使用iPhon/Pad狀態欄中的活動指示器。爲此,請使用[[UIApplication sharedApplication] setNetworkActivityIndi​​catorVisible:YES]; (顯然)

看看dowloading an image async爲dl'ing圖像的樣本。 您將停止didReceiveData函數中的活動指示符。

+0

非常感謝你! – Shredder2794

0

https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CCsQFjAA&url=https%3A%2F%2Fgithub.com%2Fjakemarsh%2FJMImageCache&ei=UEp7U_W2GoWB8gWShIGgBQ&usg=AFQjCNEc0a59K2wEOlZ2IbapWhVc87kHmg&bvm=bv.67229260,d.dGc

在這裏你會發現,你可以使用下載圖像JMImage緩存文件。

你必須改變的UIImageView + JMImageCache.m文件

if(i) { 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      safeSelf.jm_imageURL = nil; 

      safeSelf.image = i; 

      [safeSelf setNeedsLayout]; 
      [safeSelf setNeedsDisplay]; 

      if (completionBlock) { 
       completionBlock(i). 
      } 
     }); 

然後使用方法

enter code here 

{

[yourImageView setImageWithURL:[NSURL URLWithString:urlString]佔位符:[UIImage的imageNamed:@「placeholder」] completionBlock:^(UIImage * image) { //刪除添加的活動指示器

}failureBlock:^(NSURLRequest *req,NSURLResponse *resp,NSError *error) 
{ 
// show error message 
}]; 

}

相關問題