gpt4 book ai didi

ios - 通过 Kingfisher 在 UIImage 上加载 gif

转载 作者:行者123 更新时间:2023-11-28 12:14:52 24 4
gpt4 key购买 nike

我想在单元格中使用 JSQMessageView 在 UIImage 上加载 gif 图像。我无法访问任何 UIImageView 所以我这样做是为了改变媒体 View 。但是,图像没有动画。是否可以做我想做的事?

这是我的代码:

let urlString = Helpers.getUrlFromGiphyText(text: message.body!)
if let url = URL(string: urlString) {
KingfisherManager.shared.retrieveImage(with: url, options:
[.processor(DefaultImageProcessor.default),
.cacheSerializer(FormatIndicatedCacheSerializer.gif)],
progressBlock:
{ receivedSize, totalSize in
print("(indexPath.row + 1): (receivedSize)/(totalSize)")
}, completionHandler: { image, error, cacheType, imageURL in
if let gifImage = image {
let mediaItem = JSQPhotoMediaItem(image: gifImage)
cell.mediaView = mediaItem?.mediaView()
}
})
}

最佳答案

我为我的应用程序编写了这个媒体 getter 方法,它可以很好地处理 gif 文件。

注意: 请注意,我在 kingfisher 管理器下载每个文件后使用 DispatchQueue.main.asyncAfter(deadline: .now() + 0.5),因为没有延迟 - gif 文件在第一次下载时不播放。我在这件事上彻底崩溃了。我认为这可能是 Kingfisher 的一些缓存同步问题。

mediaFetcher.downloadGifFile(url) { imageUrl in
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
// Use whatever u want to load the gif file
}
}

class MediaFetcher {
func downloadGifFile(_ url: URL, completion: @escaping (_ imageURL: URL) -> () = { (imageURL) in} ) {
KingfisherManager.shared.retrieveImage(with: url, options: .none, progressBlock: nil) { (image, error, cacheType, imageUrl) in
guard error == nil else {
return
}
guard let imageUrl = imageUrl else {
return
}
completion(imageUrl)
}
}
}

关于ios - 通过 Kingfisher 在 UIImage 上加载 gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47058306/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com