2013-08-23 81 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"]]; 
}