10

每当我在表格视图中显示图像时,我几乎都会使用SDWebImage图像下载/缓存库。

我通常会这样实现它(在表格视图cellForRowAtIndexPath方法中)。

[cell.imageView setImageWithURL:
[NSURL URLWithString:@"http://asite.com/animage.jpg"] 
placeholderImage:[UIImage imageNamed:@"placeholder.png"]];        

如果它有一个缓存版本,那将加载一个缓存版本。

如果我想使用 SDWebImage 的简单性(使用占位符/强大的下载代码),但在一个地方没有缓存,该怎么办。

我知道如何在整个 SDWebImage 中禁用缓存,但我不知道您会如何调用setImageWithUrl: placeholderImage:以确保 SDWebImage 不使用任何缓存?

我想这样做的原因是我正在使用它在表格视图中显示网络摄像头(显然,您希望每次都更新它)。

4

5 回答 5

7

我建议从 UIImageView 上的类别移开并创建您自己的 SDWebImageManager 版本。如果您自己使用 SDImageCache 类,您将获得更多控制权。

来自 SDWebImageManager 本身的继承人和示例:

[[SDImageCache sharedImageCache] storeImage:image
                                  imageData:downloader.imageData
                                     forKey:[downloader.url absoluteString]
                                     toDisk:NO];

toDisk 可能是我将 BOOL 更改为 NO 的地方,默认管理器使用磁盘缓存。您可能还想经常清除内存以支持您的流图像:

[[SDImageCache sharedImageCache] clearMemory];

SDWebImageManager 代码很容易理解,我想您不需要重新发明大部分代码,只需几个重要部分即可满足您的需求。

于 2012-02-15T09:55:53.687 回答
6

干得好。确保您获得最新版本的 SDWebImage:

[anImageView setImageWithURL:[NSURL URLWithString:@"http://asite.com/animage.jpg"]
            placeholderImage:[UIImage imageNamed:@"placeholder.png"]
                     options:SDWebImageCacheMemoryOnly];

从 SDWebImageManager.h:

/**
 * This flag disables on-disk caching
 */
SDWebImageCacheMemoryOnly = 1 << 2,
于 2014-04-30T02:33:09.320 回答
2
  1. 斯威夫特 4.2
  2. Xcode: 10.0
  3. SDWebImage:~>4.0

SDImageCache.shared().config.shouldCacheImagesInMemory = false

于 2019-02-14T23:13:49.050 回答
1

您只需要使用该shouldCacheImagesInMemory属性SDImageCache并将其设置为 NO。此功能在 3.7.4+ 中可用。

于 2017-02-15T09:36:56.050 回答
1

您可以使用 SDWebImageDownloader。它不缓存数据。

于 2018-03-08T13:33:46.693 回答