SWIFT中imageview上的随机/不规则脉冲动画

时间:2015-03-13 13:58:37

标签: ios swift animation uiviewanimation

我需要实现一个随机的"脉冲"在imageview上的动画。 随机,因为我不想要一个简单的循环动画,它每隔x秒就会重复一次。脉动必须是不规则的。

我需要一个随机延迟,随机持续时间,以及它是否可能是fromValue和toValue的随机值。

我的简单脉冲动画代码,每5秒重复一次,不透明度从1开始为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 个答案:

答案 0 :(得分:2)

arc4random()arc4random_uniform()是随机的。不需要播种,它们具有加密质量。

对于范围使用arc4random_uniform()而不是arc4random()上使用模块化运算符。

您不想使用的是rand()

答案 1 :(得分: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")
    }