如何为View Controller的背景设置动画以在多种颜色之间淡入淡出?

时间:2015-04-12 06:32:08

标签: ios swift animation

如何在不造成无限内存问题的情况下实现这一目标?我正在尝试这样的事情:

override func viewDidAppear(animated: Bool) {
        view.backgroundColor = UIColor.whiteColor()
        fadeBackground()
    }

    let colors = [UIColor.blueColor(), UIColor.redColor(), UIColor.greenColor(), UIColor.orangeColor(), UIColor.purpleColor()]
    func fadeBackground(){
        UIView.animateWithDuration(4, delay: 0, options: UIViewAnimationOptions.CurveLinear, animations: {
            var randomIndex = Int(arc4random_uniform(UInt32(self.colors.count)))
            self.view.backgroundColor = self.colors[randomIndex]
        }) { (stuff Bool) -> Void in
            self.fadeBackground()
        }
    }

我担心这会最终吞噬记忆。如果没有递归,我怎么能这样做?我需要[unowned self]吗?

1 个答案:

答案 0 :(得分:2)

我相信这是正确的代码。尝试将view.backgroundColor设置为UIColor.whiteColor()等初始颜色,然后重试。然后你可以用arc4random()或其他东西随机选择另一种颜色并调用相同的方法。