![](/img/trans.png)
[英]How to parse JSON using Alamofire in Swift 3.0 without any third-party library
[英]How to use GIFs inside an iOS App without any Third Party Library in Swift 5 using UIKit?
我目前正在從事一個嚴重依賴 GIF 的項目。 但是,在迷失方向之前,我從未在 Swift 中為 iOS 使用過 GIF;)
我嘗試的第一件事是將一些 GIF 導入到我的
Assets.xcassets Folder
中。 我意識到對 GIF 使用 ImageSet 是行不通的。
所以我的第一個問題:如何將 GIF 導入我的項目。 我應該只使用一種分辨率還是三種更好的圖像方式?
然后我已經檢查了一些關於在
UIImageView
中以編程方式和通過 Storyboard呈現 GIF 的問題。 正如我發現的那樣,通過使用 UIImage Class 的擴展,這可能是最好的方法。 但是,由於某種原因,Swift 4 示例對我不起作用;(
所以我的第二個問題:如何在我的項目中使用導入的 GIF,並以編程方式在 UIImage 視圖中顯示它們?
非常感謝您提前提供的幫助!
您必須手動解碼 GIF 數據,然后才能逐幀顯示。 在這里你不會有任何簡單的答案,bcs 這絕對是一個非常難的主意,嘗試從第三方和播放器復制解碼算法,或者只是使用它。 像SDWebImage這樣的東西將是您的最佳選擇。 檢查 SDAnimatedImagePlayer、SDWebAnimatedImage 類。
我也有這樣的問題要解決。 我發現此線程中的答案很有幫助。 請檢查一下。 在 Iphone UIImageView 中添加動畫 Gif 圖像
另外,我強烈建議檢查FLAnimatedImage中的一些實現。 它處理 iOS 中的 GIF 可能需要的顯示、播放和其他功能。
如果您的動畫 gif 對所有幀都具有恆定的幀時間,那么您可以輕松地從資產目錄中加載它,而無需使用第三方庫:
extension UIImage {
static func animatedGif(named: String, framesPerSecond: Double = 10) -> UIImage? {
guard let asset = NSDataAsset(name: named) else { return nil }
return animatedGif(from: asset.data, framesPerSecond: framesPerSecond)
}
static func animatedGif(from data: Data, framesPerSecond: Double = 10) -> UIImage? {
guard let source = CGImageSourceCreateWithData(data as CFData, nil) else { return nil }
let imageCount = CGImageSourceGetCount(source)
var images: [UIImage] = []
for i in 0 ..< imageCount {
if let cgImage = CGImageSourceCreateImageAtIndex(source, i, nil) {
images.append(UIImage(cgImage: cgImage))
}
}
return UIImage.animatedImage(with: images, duration: Double(images.count) / framesPerSecond)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.