使用 FLAnimatedImage 的示例或演示 SWIFT 代码

问题描述 投票:0回答:4

我正在尝试将 FLAnimatedImage 合并到我基于 Swift 的 iOS 应用程序中,以显示动画 GIF。

我开始导入

FLAnimatedImage.h
FLAnimatedImageView.m
文件并毫无问题地创建
Bridging-Header.h

我尝试使用以下代码将 Gif 加载到我的 ImageView 中:

@IBOutlet weak var animatedImageView: FLAnimatedImageView! = animatedImageView.animatedImage = FLAnimatedImage(animatedGIFData: NSData(contentsOfFile: "chicken.gif")) `  

但是在应用程序启动时失败,并显示以下错误代码:

异常“NSInvalidArgumentException”,原因:“-[UIImageView setAnimatedImage:]:无法识别的选择器发送到实例 0x78e3c820”

关于如何修复上述错误有什么建议吗?

感谢您的帮助。

ios swift gif animated-gif
4个回答
9
投票
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var gifView: FLAnimatedImageView!
override func viewDidLoad() {
  super.viewDidLoad()
  print("\(gifView)")
  if let path =  NSBundle.mainBundle().pathForResource("rock", ofType: "gif") {
    if let data = NSData(contentsOfFile: path) {
      let gif = FLAnimatedImage(animatedGIFData: data)
      gifView.animatedImage = gif
    }
  }
}
}

顺便问一下,你的故事板中的

animatedImageView
是从 FLAnimatedImageView 子类化的吗?


4
投票

斯威夫特 4: Gif URL 示例

@IBOutlet weak var gifImageView: FLAnimatedImageView!

private func showGifImage(url: URL) {
    DispatchQueue.global().async { [weak self] in
        do {
            let gifData = try Data(contentsOf: url)
            DispatchQueue.main.async {
                self?.gifImageView.animatedImage = FLAnimatedImage(gifData: gifData)
            }
        } catch {
            print(error)
        }
    }
}

2
投票

Swift 5:gif 资源解决方案

extension FLAnimatedImage {
    convenience init (gifResource: String) {
        if let bundleURL = Bundle.main.url(forResource: gifResource, withExtension: "gif"),
           let imageData = try? Data(contentsOf: bundleURL) {
            self.init(animatedGIFData: imageData)
        }
        else { 
            self.init(animatedGIFData: nil)
        }
    }
}

不确定这是否是最好的解决方案,但它对我有用,请随时发表评论建议。


1
投票

我让它与以下扩展一起使用:

extension FLAnimatedImage {
    convenience init(gifResource: String) {
        self.init(animatedGIFData: NSData(contentsOfFile:     NSBundle.mainBundle().pathForResource(gifResource, ofType: "")!))
    }
}


声明:

@IBOutlet weak var animatedImageView: FLAnimatedImageView!


致电:

animatedImageView.animatedImage = FLAnimatedImage(gifResource: "chicken.gif")

在故事板中,UIImageView 有一个自定义子类:

FLAnimatedImageView

© www.soinside.com 2019 - 2024. All rights reserved.