如何使用FLAnimatedImage只运行一次gif?

时间:2018-11-19 09:44:29

标签: ios swift gif

我正在使用xcode 10.1和swift 4.2,我有一个用Photoshop制作的gif,它在浏览器和android studio中播放一次。 但是,当我将其导入xcode并在情节提要中单击它时,它将永远播放。它还在我的虚拟模拟器中播放了几次。

我正在创建一个IOS Webview应用程序,我想在启动画面中播放一次该gif,并在最后一帧停止播放,直到加载Webview。

我正在使用FLAnimatedImage,我发现了与我类似的问题,但是找不到我的解决方案。这就是为什么我再次询问。

我不想更改主库文件,因为我有另一个要永久播放的gif。所以我只需要停止最后一帧中的第一个gif。

您可以看到我的代码的一小部分:

@IBOutlet var LogoView: FLAnimatedImageView!

LogoView.contentMode = UIView.ContentMode.scaleAspectFit
LogoView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)
LogoView!.autoresizingMask = [.flexibleWidth, .flexibleHeight]

let imageData = try! Data(contentsOf: Bundle.main.url(forResource: "logo_gif", withExtension: "gif")!)
            LogoView.animatedImage = FLAnimatedImage(animatedGIFData: imageData)

预先感谢:)

2 个答案:

答案 0 :(得分:1)

您可以给您的imageView一个loopCompletionBlock

self.imageView.loopCompletionBlock = {_ in
    self.imageView.stopAnimating()
}

答案 1 :(得分:0)

您可以使用以下库。

https://github.com/wangjwchn/AImage

   let image = AImage(url: Bundle.main.url(forResource: "test", withExtension: "gif")!)

/* Create AImageView */
let imageview = AImageView(frame:CGRect(x: 0.0, y: 50.0, width: 380.0, height: 212.0))

/* Add AImage to AImageView */
imageview.add(image: image!)

/* Start displaying animated image */
imageview.play = true

...
...

/* Stop displaying animated image */
imageview.play = false

如果要启动播放属性,则传递true;如果要停止播放,则传递false。

您也可以从情节提要中使用此AImageView类,从类检查器将UIImageView更改为AImageView。