Как я могу анимировать фон моего контроллера вида, чтобы он исчезал среди нескольких цветов?


Как я могу это сделать, не вызывая бесконечных проблем с памятью? Я пытаюсь что-то вроде этого:

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 3

1 ответ:

Я считаю, что это правильный код. Попробуйте установить view.backgroundColor на начальный цвет, например UIColor.whiteColor(), и повторите попытку. Затем вы можете случайно выбрать другой цвет с помощью arc4random() или чего-то еще и вызвать тот же метод.