UIView背景色具有不同颜色的动画

时间:2019-04-14 09:02:44

标签: ios swift

我想通过动画和循环中的其他颜色更改UIVIew的背景颜色。但是颜色没有改变。 这是我的代码:

UIView.animate(withDuration: 0.6, delay: 0.0, options:[.repeat, .autoreverse], animations: {
            self.backgroundColor = UIColor(red: self.getRedComponant(), green: self.getGreenComponant(), blue: self.getBlueComponant(), alpha: CGFloat(1.0))
        }, completion:nil)

请帮助我找出问题所在。

1 个答案:

答案 0 :(得分:0)

.repeat不会在每次重复执行getColorComponent(),而是可以添加一个计时器

这对我有用:

 var timer = Timer()
    override func viewDidLoad() {
        super.viewDidLoad()
        timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: { (timer) in
            UIView.animate(withDuration: 0.6, delay: 0.0,  animations: {
                self.view.backgroundColor = UIColor(displayP3Red: self.getRedComponant(), green: self.getGreenComponant(), blue: self.getBlueComponant(), alpha: 1)

            }, completion:nil)
        })
    }

    func getRedComponant() -> CGFloat {
        return CGFloat((arc4random() % 256)) / 255.0;


    }
    func getBlueComponant() -> CGFloat {
        return CGFloat((arc4random() % 256)) / 255.0;

    }
    func getGreenComponant() -> CGFloat {
        return CGFloat((arc4random() % 256)) / 255.0;

    }