2017-05-02 113 views
2

我正在使用SwiftGif框架爲我製作的GIF製作動畫,問題是我需要知道當前正在顯示哪個圖像。 該擴展程序使用UIImage.animatedImage(with images: [UIImage], duration: TimeInterval) -> UIImage?來顯示動畫圖像。如何獲取動畫GIF圖像的當前圖像?

這是我如何加載我的GIF:

spikes.loadGif(name: "Trap") 

,這裏是我如何獲得圖像,我想比較它:

spikes.image.images[2] 

我知道這些薄弱解釋,但我找不到更多的相關信息,但是如果它可以幫助你,我可以給你更多的信息。

如果你知道任何其他的解決方案,可能會涉及到我使用另一個框架,我會採取它。

+0

也許是不可能的。 iOS中對靜態GIF的支持不完全是* native *,因此需要第三方框架。你聯繫過這個開發者嗎?你有權訪問源代碼嗎? – dfd

+0

是的,你也可以通過點擊上面的鏈接訪問源代碼 –

回答

0

如果有人像我一樣需要一個答案,我找到了一種方法來做到這一點。

  1. 與擴展的loadGif負載GIF()方法
  2. 自認爲正在撰寫的GIF圖像現在存儲在spikes.image.images,我這些圖像存儲在另一個變種
  3. 設置spikes.image = nil取消從loadGif()生成的動畫方法
  4. 作出這樣的不斷變化的觀點

這是它看起來像的實際圖像定時器:

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) 
      } 
     }) 
    } 

我敢肯定這是不是做的最好的方式,但它的工作原理