我的 Alamofire 图像库有问题。 我尝试下载图像,然后终止该应用程序并关闭 wifi。因此,当我在没有连接的情况下启动应用程序时,我希望看到该图像(第一次缓存在商店中),但我的图像没有出现。
这是我在一个简单的 UIViewController 中的代码,其中包含一个 UIImage 和一个 UIButton,它允许刷新 View 以进行某些测试:
import UIKit
import AlamofireImage
class ViewController: UIViewController {
@IBOutlet weak var firstImage: UIImageView!
@IBOutlet weak var descriptionLabel: UILabel!
var imageCache: ImageRequestCache = AutoPurgingImageCache()
let urlRequest = URLRequest(url: URL(string: "https://httpbin.org/image/jpeg")!)
@IBAction func refreshView(_ sender: Any) {
self.requestFirstImage()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.requestFirstImage()
}
func requestFirstImage() {
let downloader = self.diskImageDownloader()
downloader.download(self.urlRequest) { response in
if let image = response.result.value {
self.firstImage.image = image
// Add image to cache
self.imageCache.add(image, for: self.urlRequest, withIdentifier: "wolf")
self.descriptionLabel.text = "Image added to cache"
}
}
// If image is stored in cache show it
if let image = self.imageCache.image(for: self.urlRequest, withIdentifier: "wolf") {
self.firstImage.image = image
self.descriptionLabel.text = "Image showed from cache"
} else {
self.descriptionLabel.text = "Impossible to show image from cache"
// call image from disk here
------> Here how read image which is located in alamofireimage_disk_cache subfolder of the app ?
}
}
func diskImageDownloader(diskSpaceMB: Int = 300) -> ImageDownloader {
let diskCapacity = diskSpaceMB * 1024 * 1024
let diskCache = URLCache(memoryCapacity: diskCapacity, diskCapacity: diskCapacity, diskPath: "alamofireimage_disk_cache")
let configuration = URLSessionConfiguration.default
configuration.urlCache = diskCache
let downloader = ImageDownloader(configuration: configuration)
UIImageView.af_sharedImageDownloader = downloader
return downloader
}
}
提前感谢您的帮助。
亲切的问候,
最佳答案
SDWebImage 成功了。当我第一次下载图像然后终止我的应用程序时。如果之后我在没有互联网的情况下重新启动它,则会显示图像。
这里有一个例子:
import SDWebImage
@IBOutlet weak var myImage: UIImageView!
let imageURL = URL(string:"Replace by url of image")
self.myImage.sd_setImage(with: imageURL!, placeholderImage:UIImage(named: "PlaceHolderImage")!)
仅供引用,“PlaceHolderImage”是我在资源中的占位符图像的名称。所以替换成你的。该图像将在下载图像之前/期间出现。
不要忘记安装 SDWebImage 库。在项目中使用此库的三种方法:
- 使用 CocoaPods
- 使用迦太基
- 将项目克隆到您的存储库中
谢谢你,祝你好运。
关于ios - 使用 AlamofireImage 重新启动应用程序后显示缓存的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40428594/