2015-08-28 2 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, они начинают мигать очень быстро.

Я не мог понять проблему, поэтому я ищу другой способ получить эту функциональность.

Есть ли у вас другой способ сделать это или знать, как это исправить?

ответ

-1

Вы можете сделать это легко таким образом:

var animationDuration = 3; 

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

здесь ImageSet в массиве объектов UIImage.

+0

Он отлично работает, но этот код не имеет эффекта затухания между анимацией. Знаете ли вы, чтобы добавить этот эффект в эту реализацию? – Sebastian

Смежные вопросы