Мне нужно анимацию между изображениями в 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, они начинают мигать очень быстро.
Я не мог понять проблему, поэтому я ищу другой способ получить эту функциональность.
Есть ли у вас другой способ сделать это или знать, как это исправить?
Он отлично работает, но этот код не имеет эффекта затухания между анимацией. Знаете ли вы, чтобы добавить этот эффект в эту реализацию? – Sebastian