我需要在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:
它工作正常,但是這個代碼不具備的動畫之間的淡入淡出效果。你知道在這個實現中添加這個效果嗎? – Sebastian