2015-08-28 170 views
0

我需要在UIImageView中的圖像之間進行動畫。所以,研究後,我想出了這個類:UIImageView在動畫之間淡入淡出

import UIKit 

    class GzImageView: UIImageView { 

    var imageCollection:[UIImage]? //images to show 
    var count:Int = 0 // images counter 

    func animate(){ 
     //when Counter get last image set it to the first one 
     if self.count >= self.imageCollection?.count { 
      self.count = 0 
     } 
     //get the image to show 
     let img = self.imageCollection![self.count] 
     //animate the transition 
     UIView.transitionWithView(self, 
      duration: 1.0, 
      options: UIViewAnimationOptions.TransitionCrossDissolve, 
      animations: { self.image = img }) //set the new image 
      { (Bool) -> Void in 
      self.animate() //Direct recursion 
      self.count++ 
     } 
    }      
} 

,而且我用這種方式:

let imgView = GzImageView(frame: CGRectMake(30, 100, 200, 200)) 
imgView.imageCollection = ["cake.png","bag.png","hat.png"].map { name -> UIImage in UIImage(named:name)!} 
imgView.animate() 

它,當我作爲一個UIView的子視圖使用工作正常。但我需要將其用作UICollectionViewCell子視圖。而作爲一個UICollectionViewCell子視圖,它不能正常工作。當我更改爲其他UIView,並返回到UICollectionView圖像開始快速閃爍。

我找不出這個問題,所以我正在尋找另一種獲得此功能的方法。

你們有另一種方式來做到這一點,或知道如何解決這個問題嗎?在UIImage的對象數組

var animationDuration = 3; 

      imageView.animationImages = imageSet; 
      imageView.animationDuration = NSTimeInterval(animationDuration); 
      imageView.startAnimating(); 

這裏imageSet:

回答

-1

您可以輕鬆地這樣做。

+0

它工作正常,但是這個代碼不具備的動畫之間的淡入淡出效果。你知道在這個實現中添加這個效果嗎? – Sebastian