核心动画+ UIDynamics + arc4random()

时间:2015-03-04 06:58:27

标签: ios xcode swift uikit-dynamics

我有一个UIImage的UFO,我只是想让它漂浮在随机位置,如游戏小行星中的小行星。我放了一些轮换,暂时在那里生长。如果所有动画都是随机完成的话会很好。即使只是随机动作,我也会非常开心。我如何实现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)
}


}

1 个答案:

答案 0 :(得分:0)

arc4random_uniform(n)将返回一个从0到n的数字。如果你想让它返回一个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持续时间的动画所以我添加了1到它使数字1到6。