测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可 | MIT |
发布最新发布 | 2017年3月 |
由James Ide维护。
依赖 | |
AsyncDisplayKit/Core | ~> 2.0 |
SDWebImage/Core | ~> 4.0 |
AsyncDisplayKit 现在如果将其作为依赖项包括在内,将使用 Pinterest 的 PINRemoteImage 和 PINCache。它们提供了 WebASDKImageManager 最初旨在提供的功能,并通过更紧密地与 AsyncDisplayKit 合作提高了内存管理效率。除非您特别希望使用 SDWebImage,否则应使用 AsyncDisplayKit 的默认功能。
这是一个用于 AsyncDisplayKit 的图像下载和缓存器,它使用了 SDWebImage。这是一个实现 ASImageDownloaderProtocol
和 ASImageCacheProtocol
的代码,它与 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;
默认选项是 SDWebImageRetryFailed
和 SDWebImageContinueInBackground
,通常是你想要的。有关所有受支持选项,请参阅 SDWebImage 的 SDWebImageOptions
枚举。
有时您可能需要将图片节点配置得与默认设置不同。您可以创建一个新的 WebASDKImageManager
,该程序配置以满足您的需求。
SDWebImageManager *webImageManager = [SDWebImageManager sharedManager];
SDWebASDKImageManager *asyncImageManager =
[[SDWebASDKImageManager alloc] initWithWebImageManager:webImageManager];
asyncImageManager.webImageOptions = SDWebImageRetryFailed | SDWebImageCacheMemoryOnly;
WebASDKImageManager
遵循 ASImageDownloaderProtocol
和 ASImageCacheProtocol
,因此您可以使用新的管理器创建新的图片节点。
ASNetworkImageNode *imageNode = [[ASNetworkImageNode alloc] initWithCache:asyncImageManager
downloader:asyncImageManager];