我正在使用AlamofireImage库来下载/缓存Web图像并在tableViewCells中的UIImageView中显示它。
imageView.af_setImage(withURL: url, placeholderImage: nil, filter: nil, imageTransition: .crossDissolve(0.3), runImageTransitionIfCached: true, completion: { (response) in
//...... other code .....
})
它适用于.png / .jpg或其他静止图像,但我无法使用此功能显示GIF图像。
我尝试使用外部库将imageData转换为gif图像,但它工作得很完美,但Alamofire并未缓存gif数据,下次将图像加载为静止图像。
检查以下代码:
imageView.af_setImage(withURL: url, placeholderImage: nil, filter: nil, imageTransition: .crossDissolve(0.3), runImageTransitionIfCached: true, completion: { (response) in
if imageUrl.hasSuffix("gif") {
if let data = response.data{
self.imageView.image = UIImage.gifImageWithData(data)
}
}
})
以上代码首次显示GIF,但下次仅显示静止图像。
知道如何使用AlamofireImage实现以下目标:
首次下载GIF imageData,将其缓存并向GIF格式显示
下次从缓存中获取imageData并再次显示GIF
答案 0 :(得分:0)
我还没有找到使用 AlamofireImage 播放 GIF 的直接方法,但我们可以使用 SwiftyGif。我在整个应用程序中都使用 AlamofireImage,但为了显示 GIF 和从服务器加载,我使用的是 SwiftyGif。使用 SwiftyGif,您可以播放、从服务器加载以及在本地加载。我认为这将是可靠的解决方案,而不是使用 SDWebImage。
axios({
method: "post",
url: "myurl",
data: myFormData,
headers: { "Content-Type": "multipart/form-data" },
})
.then(function (response) {
//handle success
console.log(response);
})
.catch(function (response) {
//handle error
console.log(response);
});
答案 1 :(得分:-1)
下载GIF文件,下次获取文件并显示
Alamofire.download(gifUrl, to: destination).responseJSON(completionHandler: {
response in
if let filePath = response.destinationURL?.path{
if let gifImage = UIImage.init(contentsOfFile: filePath){
self.imageVIew.image = gifImage
}
}
})