如何获取动画GIF图像的当前图像?

时间:2017-05-02 15:18:45

标签: ios swift xcode swift3

我正在使用SwiftGif框架为我制作的GIF制作动画,问题是我需要知道当前正在显示哪个图像。 扩展程序使用UIImage.animatedImage(with images: [UIImage], duration: TimeInterval) -> UIImage?来显示动画图片。

以下是我加载gif的方法:

spikes.loadGif(name: "Trap")

以下是我如何获得我想将其与之比较的图像:

spikes.image.images[2]

我知道那些是弱的解释,但我找不到更多相关的信息,但是如果它可以帮到你,我可以给你更多的信息。

如果您知道任何其他可能涉及我使用其他框架的解决方案,我也会接受它。

1 个答案:

答案 0 :(得分:0)

如果有人像我一样需要答案,我找到了办法。

  1. 使用扩展程序的loadGif()方法加载GIF
  2. 由于组成GIF的图像现在存储在spikes.image.images中,我将这些图像存储在另一个var中
  3. 设置spikes.image = nil以取消从loadGif()方法
  4. 生成的动画
  5. 制作一个不断更改视图实际图像的计时器
  6. 以下是它的样子:

    spikes.loadGif(name: "Trap", completion: { _ in
                self.spikesImages = self.spikes.image?.images
                self.spikes.image = nil
                self.spikes.image = self.spikesImages.first?.img
                self.animateSpikes()
            })
    
    func animateSpikes() {
            Timer.scheduledTimer(withTimeInterval: 0.5, repeats: true, block: { _ in
                if let currentImage = self.spikesImages.first {
                    self.spikes.image = currentImage
                    self.spikesImages.append(currentImage)
                    self.spikesImages.remove(at: 0)
                }
            })
        }
    

    我很确定这不是最好的方法,但它有效