使用SwiftGif制作的gif动画运行缓慢

4

我使用了SwiftGif库。我将一些gif放入UIImageView中。下面是我的代码:

dispatch_async(dispatch_get_main_queue(),{
    self.img1.image=UIImage.gifWithURL("http://mywebsite/img1.gif")
    self.img2.image=UIImage.gifWithURL("http://mywebsite/img2.gif")
    self.img3.image=UIImage.gifWithURL("http://mywebsite/img1.gif")
})

这些GIF图片显示正确,但是动画比较缓慢。我该如何解决?谢谢!


1
你解决了这个问题吗?我也遇到了同样的问题。 - riverhawk
@riverhawk 是的,现在我使用UIWebView而不是SwiftGif库。 - Matteo Serpentoni
3个回答

8
将以下代码粘贴到 UIImage+Gif.swift 中,在 animatedImageWithSource 函数中计算持续时间的位置处:
 // Calculate full duration
let duration: Int = {
    var sum:Double = 0

    for val: Int in delays {
        let newVal =    Double(val) - (Double(val)/1.5)//Modified calculation to speed up the animtion in gif
        //sum += val :default calculation
        sum += newVal
    }

    return Int(sum)
    }()

2
如果您的gif文件太大,那么可以使用一个WebView来加载该gif文件。
添加一个WebView,
将gif文件添加到您的项目目录中,然后添加以下代码:
let url = Bundle.main.url(forResource: "your-gif-name", withExtension: "gif")!
let data = try! Data(contentsOf: url)
webView.load(data, mimeType: "image/gif", textEncodingName: "UTF-8", baseURL: NSURL() as URL)

注意:使用任何gif编辑网站,将您的gif文件的高度宽度webview相同。

0
我猜你的gif文件大小太大了?或者时间太长了?因为SwiftGif是基于UIAnimatedImage的。
此外,还要控制你的gif帧数为9、10、20、30、40,并将GCD设置为1。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接