2013-08-23 83 views
0

我已經使用SDWebimages類從url加載圖像到圖像視圖。但它仍然需要時間來加載。從url快速加載圖像

NSString *filePath1 = [NSString stringWithFormat:@"%@",pathimage1]; 
[cell.image1 setImageWithURL:[NSURL URLWithString:filePath1]placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 

誰能告訴我我做錯了什麼?或從url加載圖像的最佳方式。

+0

我冷杉猜測將是服務器發送一個'非cache'頭與圖像和那裏的圖像不cahced或者您正在加載您高速緩存清除一些老這麼多圖片圖像爲新的空間騰出空間。 – rckoenes

+0

@rckoenes,但其工作正常的Android應用程序 –

+0

@MinkleGraf這可能是,Android不會看高速緩存標題。你可能只想檢查它們,至少它會消除它是緩存頭。 – rckoenes

回答

0

試試這個:從網絡

NSString *filePath1 = [NSString stringWithFormat:@"%@",pathimage1]; 

[cell.image1 setImageWithURL:[NSURL URLWithString:filePath1]] 
       placeholderImage:[UIImage imageNamed:@"placeholder.png"] 
         success:^(UIImage *image, BOOL cached) 
     { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       cell.image1.image = image; 
      }); 
      NSLog(@"success Block"); 
     } 
         failure:^(NSError *error) 
     { 
      NSLog(@"failure Block"); 
     }]; 
0

加載圖像可能需要較長的時間來加載有幾個原因,有兩個最明顯的是

  • 慢速連接到互聯網的設備上(Wifi/3G/2G)。
  • 重載服務器。

如果您可以控制服務器和存儲在其上的圖像,可以加快速度,您可以始終首先加載較小的版本(低質量預覽/縮略圖),然後加載較大/全尺寸必要時版本:

typedef enum { 
    MyImageSizeSmall, 
    MyImageSizeMedium, 
    MyImageSizeLarge 
} MyImageSize; 

-(void)requestAndLoadImageWithSize:(MyImageSize)imageSize intoImageView:(UIImageView *)imageView 
{ 
    NSString *imagePath 
    switch (imageSize) 
    { 
    case MyImageSizeSmall: 
     imagePath = @"http://path.to/small_image.png"; 
    break; 
    case MyImageSizeMedium: 
     imagePath = @"http://path.to/medium_image.png"; 
    break; 
    case MyImageSizeLarge: 
     imagePath = @"http://path.to/large_image.png"; 
    break; 
    } 
    [imageView setImageWithURL:[NSURL URLWithString:imagePath] 
      placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; 
}