WebASDKImageManager 3.0.0

WebASDKImageManager 3.0.0

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最新发布2017年3月

James Ide维护。



 
依赖
AsyncDisplayKit/Core~> 2.0
SDWebImage/Core~> 4.0
 

  • James Ide

注意

AsyncDisplayKit 现在如果将其作为依赖项包括在内,将使用 Pinterest 的 PINRemoteImage 和 PINCache。它们提供了 WebASDKImageManager 最初旨在提供的功能,并通过更紧密地与 AsyncDisplayKit 合作提高了内存管理效率。除非您特别希望使用 SDWebImage,否则应使用 AsyncDisplayKit 的默认功能。


这是一个用于 AsyncDisplayKit 的图像下载和缓存器,它使用了 SDWebImage。这是一个实现 ASImageDownloaderProtocolASImageCacheProtocol 的代码,它与 ASNetworkImageNode 兼容。

默认情况下,ASNetworkImageNode 不缓存图像,也不合并相同图像的网络请求。SDWebImage 做这两件事。使用 WebASDKImageManager,您将获得 SDWebImage 的图像下载和缓存优化以及 ASDK 的异步布局和层预合成功能。

安装

WebASDKImageManager 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod "WebASDKImageManager"

用法

使用 WebASDKImageManager 的最简单方法是使用它在 ASNetworkImageNode 类别中提供的初始化器。

ASNetworkImageNode *imageNode = [[ASNetworkImageNode alloc] initWithWebImage];
// Setting the URL property will automatically access the memory and disk
// caches, and download and cache the image if necessary
imageNode.URL = imageURL;

配置

默认情况下,图像下载和缓存由一个共享的 WebASDKImageManager 实例处理。您可以通过调用 [SDWebASDKImageManager sharedManager] 获取对共享管理器的引用。它的 webImageOptions 属性用于配置所有使用共享管理器的 ASNetworkImageNode 实例的下载和缓存行为。

SDWebASDKImageManager *defaultManager = [SDWebASDKImageManager sharedManager];
// No longer try to download images that were previously unavailable
defaultManager.webImageOptions &= ~SDWebImageRetryFailed;

默认值

默认选项是 SDWebImageRetryFailedSDWebImageContinueInBackground,通常是你想要的。有关所有受支持选项,请参阅 SDWebImage 的 SDWebImageOptions 枚举。

配置单个图像节点

有时您可能需要将图片节点配置得与默认设置不同。您可以创建一个新的 WebASDKImageManager,该程序配置以满足您的需求。

SDWebImageManager *webImageManager = [SDWebImageManager sharedManager];
SDWebASDKImageManager *asyncImageManager =
  [[SDWebASDKImageManager alloc] initWithWebImageManager:webImageManager];
asyncImageManager.webImageOptions = SDWebImageRetryFailed | SDWebImageCacheMemoryOnly;

WebASDKImageManager 遵循 ASImageDownloaderProtocolASImageCacheProtocol,因此您可以使用新的管理器创建新的图片节点。

ASNetworkImageNode *imageNode = [[ASNetworkImageNode alloc] initWithCache:asyncImageManager 
                                                               downloader:asyncImageManager];