您好,此应用程序当前以空白的黑色屏幕开始,当您按下屏幕中间的按钮时,它会将背景更改为随机颜色。我想从黑屏中的一条消息开始,说“警告可能会导致癫痫发作”,一旦第一次按下按钮,消息就会消失,背景将永远闪烁或闪烁 2 种随机颜色,直到按下按钮再次。当再次按下按钮时,它会闪烁或闪烁 2 种新的随机颜色等等。我希望这不会令人困惑,这真的很容易,我只是想不通:( 请帮忙
导入 UIKit
class ViewController: UIViewController {
let colors: [UIColor] = [
.systemYellow,
.systemGreen,
.systemPurple,
.systemPink,
.systemRed,
.systemBlue,
.systemOrange,
.black,.gray
]
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .clear
}
@IBAction func didTapButton() {
UIView.animate(withDuration: 1/12, delay:0, options:[UIView.AnimationOptions.autoreverse], animations: {
self.view.backgroundColor = self.colors.randomElement()
self.view.backgroundColor = self.colors.randomElement() }, completion: nil)
}
}
答案 0 :(得分:0)
首先设置一个计时器,因为您将一直运行动画直到点击按钮。在 ViewDidLoad() 中,这将启动计时器。
var timer: customTimer = Timer()
var isAnimating = false
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .clear
startAnimation()
}
我们用 startAnimation()
启动计时器,它每 1 秒执行一次代码。这是 double
,因此您可以将其设置为几分之一秒,例如 0.1
或 0.001
请注意,数字越小,资源越密集。
func startAnimation() {
customTimer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { timer in
UIView.animate(withDuration: 1/12, delay:0, options:[UIView.AnimationOptions.autoreverse], animations: {
self.view.backgroundColor = self.colors.randomElement()
self.view.backgroundColor = self.colors.randomElement() }, completion: nil)
}
}
计时器可以失效,因此只要您需要停止它们,就可以“停止”。只需确保您没有 nil 计时器,否则它会崩溃。您可以创建一个带有 var animationRunning = false
的标志,然后切换它以使按钮打开/关闭动画。
@IBAction func buttonTapped() {
isAnimating = !isAnimating
if isAnimating { customTimer.start() }
else { customTimer.invalidate() }
}