【问题标题】:iOS UITableViewCell Images from URL来自 URL 的 iOS UITableViewCell 图像
【发布时间】:2016-04-05 17:50:19
【问题描述】:

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

我正在使用以下代码在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];

    });
});

【问题讨论】:

标签: ios objective-c uitableview tableviewcell


【解决方案1】:

您应该使用SDWebImage,它将图像缓存在您的设备上,如果相同的图像来自服务器,那么它会从您的本地设备加载。

  1. 将 SDWebImage 添加到您的项目中。

  2. 导入<SDWebImage/UIImageView+WebCache.h> 标头

    然后在cellForItemAtIndexPath添加以下代码:

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

【讨论】:

    【解决方案2】:

    最好使用 SDWebImageCache,因为这是一个有利的第三方库,可以将图像存储在缓存中。下载后会自动从缓存中获取图片。

    SDWebImageCache

    【讨论】:

      【解决方案3】:

      当你下载图片时把它放到文档目录中,在你下载图片之前检查文档目录是否包含图片,然后从那里加载它,否则从 URL 下载

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2017-10-21
          • 2014-03-19
          • 2023-03-03
          • 1970-01-01
          • 2021-06-11
          • 2019-07-22
          • 2012-11-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多