核心动画 + UIDynamics + arc4random()

Core Animation + UIDynamics + arc4random()

我有一个 UIImage 的不明飞行物,我只是想让它漂浮在周围并在随机位置进进出出,就像小行星游戏中的小行星一样。我进行了一些轮换并暂时在那里生长。如果所有的动画都是随机完成的,那就太好了。即使它只是随机运动,我也会非常高兴。我如何实现 arc4random()?完成这个简单的任务后,我想学习如何将 arc4random() 应用于 UIDynamics 中的各种行为。提前致谢。

import UIKit

class ViewController: UIViewController {

@IBOutlet var ufo: UIImageView!

override func viewDidLoad() {
    super.viewDidLoad()

    UIView.animateWithDuration(5.5, delay: 0, options: .Repeat, animations: {
        let grow = CGAffineTransformMakeScale(2, 2)
        let angle = CGFloat( -30)
        let rotate = CGAffineTransformMakeRotation(angle)
        self.ufo.transform = CGAffineTransformConcat(grow, rotate)
        }, completion: nil)
}


}

arc4random_uniform(n) 将 return 一个从 0 到 n 的数字。如果你想要这个 return 一个 Int 那么你可以按如下方式转换它:

var randomNumber = Int(arc4random_uniform(7))

使用此函数生成随机数,然后在您的动画中使用这些数字。

例如,如果您希望动画具有随机持续时间:

var duration = Double(arc4random_uniform(5)+1)
var x = CGFloat(arc4random_uniform(320))
var y = CGFloat(arc4random_uniform(960))
UIView.animateWithDuration(duration, delay: 0, options: .Repeat, animations: {
    let grow = CGAffineTransformMakeScale(2, 2)
    let angle = CGFloat( -30)
    let rotate = CGAffineTransformMakeRotation(angle)
    self.ufo.transform = CGAffineTransformConcat(grow, rotate)
    self.ufo.frame = CGRectMake(x,y,self.ufo.frame.size.width, self.ufo.frame.size.height)
    }, completion: nil)

我有 arc4random_uniform(5)+1 的原因是因为函数是从 0 到 n 正如我上面提到的,所以在这种情况下是 0 到 5 但我们不想要带有 0 的动画duration 所以我给它加 1 使数字 1 到 6。