来自URL的iOS UITableViewCell图像

时间:2016-04-05 09:21:36

标签: ios objective-c uitableview tableviewcell

我从某个网址加载我UITableViewCell中的图片,这些图片大小约为每张图片80-100 kb。当我异步下载图像but when i scroll the tableview, images start again downloading. Can i get rid of this时,一切正常,因为我只限制了行数。 我想如果网址下载一次的图片不应该再次下载,因为当图像再次开始下载时,它会让用户感觉不舒服。

我使用下面的代码在CellforRowAtIndexPath中加载图片:

dispatch_async(dispatch_get_global_queue(0,0), ^{
    NSData * data = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString:url];
    if ( data == nil )
        return;
    dispatch_async(dispatch_get_main_queue(), ^{
        cell.eventImage.image=  [UIImage imageWithData:data];

    });
});

4 个答案:

答案 0 :(得分:0)

您应该使用SDWebImage来缓存您设备上的图片,如果相同的图片来自服务器,则会从您的本地设备加载。

  1. 将SDWebImage添加到项目中。
  2. 导入<SDWebImage/UIImageView+WebCache.h>标题

    然后在cellForItemAtIndexPath添加以下代码:

    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:@"your image URL"]
          placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
    

答案 1 :(得分:0)

更好地利用SDWebImageCache,因为这是一个有利的第三方库,用于将图像存储在缓存中。下载一次后,图像将自动从缓存中获取。

SDWebImageCache

答案 2 :(得分:0)

当您下载图像时将其放入文档目录并在下载图像之前检查文档目录是否包含图像然后从那里加载它,否则从URL下载

答案 3 :(得分:0)

如果你想要,你可以自己做。您可以使用NSCache来保存图像。 NSCache它就像NSMutableDictionary(按键保存图像)。然后你可以检查一下。对于键,您可以使用路径到您的图像。 但我还建议您使用 SDWebImage