在我正在创建的应用程序的初始屏幕上,向用户显示两个选项(注册和登录),必须按下两个选项才能继续。屏幕中间是徽标,其上方是应用程序的名称。

我想让背景连续在多种颜色之间淡入淡出,但是我遇到一个问题,即颜色过渡时(一直都是这样),按钮会停止工作。

我当前的代码:

override func viewDidAppear(_ animated: Bool) {
    randomColor()
}

@IBAction func registerButton(_ sender: UIButton) {
    print("New user is registering")
}

@IBAction func signInButton(_ sender: UIButton) {
    print("Returning user is signing in")
}

func randomColor() {
    let possibleColors = [standardRed, standardAqua, standardBlue, standardPink, standardGreen, standardOrange, standardPurple, standardYellow]
    let randomIndex = Int(arc4random_uniform(UInt32(possibleColors.count)))
    let randomColor = possibleColors[randomIndex]


    UIView.animate(withDuration: 3.0, delay: 0.0, options: .curveEaseInOut, animations: {
        self.view.backgroundColor = randomColor
    }, completion: { finished in
        self.randomColor()
    })
}

// 'standardXXX' are just global variable UIColors

我是否正确地认为,因为函数“randomColor”一直在启动,所以无法启动其他功能?

有什么解决方案可以使“randomColor()”在允许其他IBAction使用的同时重复自身吗?

最佳答案

原因是您不允许用户交互。尝试用.curveEaseInOut替换[.allowUserInteraction, .curveEaseInOut]

09-28 13:32