适用于iOS的图像缓存库?

时间:2011-11-08 10:39:05

标签: iphone ios uiimage

我正在构建相册应用程序并找到一些图像缓存库,即:

你推荐的是什么(或者不在列表中的其他库)?我在寻找:

  • 效率
  • 垃圾收集方面的最小努力
  • 首选支持

由于

7 个答案:

答案 0 :(得分:16)

就个人而言,我认为SDWebImage是最好的,因为它是一个绝对不费力的解决方案,并提供了最简单的缓存处理机制,因为它只是UIImageView类的扩展。

答案 1 :(得分:11)

图像异步下载和缓存不是一项简单的任务。它需要做得好,否则会破坏它的目的。因此,我强烈建议您最终建立自己的。话虽如此,我需要一个快速而简单的解决方案,以便继续开发我的应用程序。

我找到了这些解决方案:

我尝试过HJCache,但在处理大图像(1.5M +)时它没有提供出色的滚动性能。对于小图像,它工作得很好。同时尝试了LazyTableImages,但整合并不简单。

最终,我选择了SDWebImage。整合不可能更简单。将库链接到项目后,您需要做的就是:

[cell.imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"]
               placeholderImage:[UIImage imageNamed:@"placeholder.png"]];

tableView:cellForRowAtIndexPath:中。

此外:

  • 也适用于自定义单元格
  • 不阻止用户界面
  • 提供出色的滚动性能
  • 图像下载和缓存是无缝的。

答案 2 :(得分:3)

有多个框架可以解决这个问题。仅举几例:

夫特:

目标-C:

答案 3 :(得分:2)

另请尝试APSmartStorage。它会自动将UIImage / NSData缓存在磁盘或内存中。

它有可爱的块式API;

    // setup data parsing block
APSmartStorage.sharedInstance.parsingBlock = ^(NSData *data, NSURL *url)
{
    return [UIImage imageWithData:data scale:UIScreen.mainScreen.scale];
};
...
// show some progress/activity
...
// load object with URL
[APSmartStorage.sharedInstance loadObjectWithURL:imageURL callback:(id object, NSError *error)
{
    // hide progress/activity
    if (error)
    {
        // show error
    }
    else 
    {
        // do something with object
    }
}];

这很聪明而且很简单:

enter image description here

答案 4 :(得分:0)

我尝试使用SDWebImage。

同意它很容易整合。

然而,这个库的一个大问题是它不支持“max-age”缓存控制。

图书馆仍在开发中,但他们没有选择这个限制。

答案 5 :(得分:0)

我强烈建议您尝试KingfisherSDWebImage。两者都适用于从网上下载和缓存图像。

答案 6 :(得分:0)

Moa

Moa 是使用Swift编写的图像下载库。通过设置其moa.url属性,可以下载并在图像视图中显示图像。

安装 使用CocoaPods将Moa添加到您的项目中。只需将以下行添加到您的Podfile中即可。

pod'moa','〜> 8.0'