我正在使用SDWebImage下载和缓存图像。我想将许多图片预先加载到缓存中。
是否有一种简单的方法可以在不必向用户显示图像的情况下执行此操作?我目前正在使用此代码进行显示:
[anImageView setImageWithURL:[NSURL URLWithString:@"http://www.sameple.com/myimage.jpg"]
placeholderImage:[UIImage imageNamed:@"loadingicon.png"]];
答案 0 :(得分:50)
[[SDWebImagePrefetcher sharedImagePrefetcher] prefetchURLs:<NArray with image URLs>];
这将为您处理并发下载问题(maxConcurrentDownloads
)。
答案 1 :(得分:5)
SDWebImageManager是UIImageView + WebCache背后的类 类别。它将异步下载器与图像缓存联系起来 商店。您可以直接使用此类从Web图像中受益 在UIView之外的另一个上下文中使用缓存进行下载(即:with 可可)。
以下是如何使用SDWebImageManager的简单示例:
SDWebImageManager *manager = [SDWebImageManager sharedManager];
[manager downloadWithURL:imageURL
options:0
progress:^(NSInteger receivedSize, NSInteger expectedSize)
{
// progression tracking code
}
completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished)
{
if (image)
{
// do something with image
}
}];
您可以浏览并为每张图片执行此操作...我不确定1000张图片的性能如何,您需要确保并警告您的用户您的内容是什么去做。
另一种坚持使用SDWebImage
的方法是管理您自己的NSOperationQueue
SDWebImageDownloaderOperation
,并使用SDImageCache
来完成它们的存储。
/**
* Store an image into memory and optionally disk cache at the given key.
*
* @param image The image to store
* @param key The unique image cache key, usually it's image absolute URL
* @param toDisk Store the image to disk cache if YES
*/
- (void)storeImage:(UIImage *)image forKey:(NSString *)key toDisk:(BOOL)toDisk;
这样可以让您更好地控制已执行的并发下载操作数以及更好的状态保存控制。