2015-03-13 68 views
0

我需要在imageview上實現隨機「脈衝」動畫。 隨機,因爲我不想要一個簡單的循環動畫,它每x秒永遠重複它。脈動必須是不規則的。SWIFT中imageview上的隨機/不規則脈衝動畫

我需要一個隨機延遲,隨機持續時間,以及fromValue和toValue的隨機值。

我的一個簡單的脈衝動畫代碼,從1重複每5秒,有透明度,以0:

var pulseAnimation:CABasicAnimation = CABasicAnimation(keyPath: "opacity") 
    pulseAnimation.duration = 5.0 
    pulseAnimation.fromValue = NSNumber(float: 0.0) 
    pulseAnimation.toValue = NSNumber(float: 1.0) 
    pulseAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
    pulseAnimation.autoreverses = true 
    pulseAnimation.repeatCount = Float.infinity 
    myimageview.layer.addAnimation(pulseAnimation, forKey: "opacity") 

如果我寫的是這樣的:

pulseAnimation.duration = arc4random(....) //I will have a "fixed" random value 

我該怎麼做才能實現不規則值?

回答

2

arc4random()arc4random_uniform()是隨機的,你可以得到。不需要播種,它們是密碼質量的。

對於範圍使用arc4random_uniform()而不是使用arc4random()模塊化操作符。

你不想使用的是rand()

1

好,我找到了一個方法:

for loopNumber in 1...5 { 

     let myImageView = UIImageView() 
     myImageView.image = UIImage(named: "nameImageView") 
     myImageView.frame = CGRect(x: 0, y: 0, width: 100, height: 200) 
     self.view.addSubview(myImageView) 

     var pulseAnimation = CABasicAnimation(keyPath: "opacity") 

     pulseAnimation.fromValue = Double(arc4random_uniform(6)+1)/10 
     pulseAnimation.toValue = Double(arc4random_uniform(6)+2)/10 
     pulseAnimation.duration = Double(loopNumber)    
     pulseAnimation.repeatCount = Float.infinity 

     myImageView.layer.addAnimation(pulseAnimation, forKey: "opacity") 
    }