缓存图像以供离线使用 SDWebImage
Cache image for use offline SDWebImage
我正在使用 SDWebImage 从不同的 URL 下载图像,现在我想知道是否可以下载这些图像并将它们存储在某个地方,这样当我离线并启动我的应用程序时我仍然可以看到他们了吗?
我注意到 Instagram 使用类似的东西,一旦你下载了图片,你可以关闭应用程序并离线,然后重新打开应用程序,你仍然可以看到图片。
我认为 SDWebImage 可以做到这一点,但不确定,如果不可能,请纠正我。
非常感谢任何可以提供帮助的人!
导入 UIImageView+WebCache.h
header,并在 viewcontroller 中调用 setImageWithURL:placeholderImage: 方法。 SDWebImage lib 将为您处理,从异步下载到缓存管理。
我假设你想要存档的是那种 feed,在你的应用程序 killed/restarted 之后你有 4-5 张图片显示并且你没有互联网连接 - 就像 Instagram 一样.
您可能会这样,当您连接到 Internet 时,可以像往常一样下载图像,并将 4-5 张图像作为 NSData 存储到您的核心数据中。
然后您可以将这些图像用作占位符,并且当用户没有连接时您将拥有 "content"。
这是将图像转换为 NSData 并返回的代码:
let dataFromImage = UIImagePNGRepresentation(image!)!
let imageFromData = UIImage(data: imageData)
这里是
的完美教程
然后您可以使用核心数据中的图像填充 tableView(例如)以防万一 reachability == false
。
您可以使用 SDWebImage
将图像存储在应用程序目录中,而不是手动存储。使用 SDImageCache
会更简单。 diskImageExistsWithKey
通过回调确定您的图像是否存在于某个位置(目录中或应用程序的临时文件夹中)。你只要检查一下! ...
[[SDImageCache sharedImageCache] diskImageExistsWithKey:localImagePath completion:^(BOOL isInCache) {
if ( isInCache ) {
image = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:localPath]; // it returns a simple UIImage
[yourImageView setImage:[[SDImageCache sharedImageCache] imageFromDiskCacheForKey:localPath]]; // or set image in your UIImageView
} else {
[yourImageView sd_setImageWithURL:[NSURL URLWithString:downloadPath] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
if (image) {
[[SDImageCache sharedImageCache] storeImage:image forKey:localPath toDisk:YES completion:^{ // This block will help you to store image from server to local directiry
NSLog(@"Downloaded");
}];
}
}];
}
}] ;
我正在使用 SDWebImage 从不同的 URL 下载图像,现在我想知道是否可以下载这些图像并将它们存储在某个地方,这样当我离线并启动我的应用程序时我仍然可以看到他们了吗?
我注意到 Instagram 使用类似的东西,一旦你下载了图片,你可以关闭应用程序并离线,然后重新打开应用程序,你仍然可以看到图片。
我认为 SDWebImage 可以做到这一点,但不确定,如果不可能,请纠正我。
非常感谢任何可以提供帮助的人!
导入 UIImageView+WebCache.h
header,并在 viewcontroller 中调用 setImageWithURL:placeholderImage: 方法。 SDWebImage lib 将为您处理,从异步下载到缓存管理。
我假设你想要存档的是那种 feed,在你的应用程序 killed/restarted 之后你有 4-5 张图片显示并且你没有互联网连接 - 就像 Instagram 一样.
您可能会这样,当您连接到 Internet 时,可以像往常一样下载图像,并将 4-5 张图像作为 NSData 存储到您的核心数据中。
然后您可以将这些图像用作占位符,并且当用户没有连接时您将拥有 "content"。
这是将图像转换为 NSData 并返回的代码:
let dataFromImage = UIImagePNGRepresentation(image!)!
let imageFromData = UIImage(data: imageData)
这里是
然后您可以使用核心数据中的图像填充 tableView(例如)以防万一 reachability == false
。
您可以使用 SDWebImage
将图像存储在应用程序目录中,而不是手动存储。使用 SDImageCache
会更简单。 diskImageExistsWithKey
通过回调确定您的图像是否存在于某个位置(目录中或应用程序的临时文件夹中)。你只要检查一下! ...
[[SDImageCache sharedImageCache] diskImageExistsWithKey:localImagePath completion:^(BOOL isInCache) {
if ( isInCache ) {
image = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:localPath]; // it returns a simple UIImage
[yourImageView setImage:[[SDImageCache sharedImageCache] imageFromDiskCacheForKey:localPath]]; // or set image in your UIImageView
} else {
[yourImageView sd_setImageWithURL:[NSURL URLWithString:downloadPath] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
if (image) {
[[SDImageCache sharedImageCache] storeImage:image forKey:localPath toDisk:YES completion:^{ // This block will help you to store image from server to local directiry
NSLog(@"Downloaded");
}];
}
}];
}
}] ;