我想设置视图的背景色,并在延迟一定时间后将其更改为另一种颜色。下面是我尝试的方法:
print("setting color 1")
self.view.backgroundColor = UIColor( rgb: 0xFF0000)
print("sleeping")
sleep(3)
self.view.backgroundColor = UIColor( rgb: 0xFFFF00)
print("setting color 2")
但是,我不知道第一种颜色。该应用程序停留在它的初始颜色,等待3秒和改变比颜色2。没有颜色1的迹象。如何修复?
sleep(3)
似乎在更新其颜色时锁定了视图。但是,如果在延迟后调用myButton.isEnabled = false
并将其设置为true
,则按钮将按预期运行,并在延迟期间保持禁用状态。
发布于 2018-05-15 09:27:41
你可以试试:
self.view.backgroundColor = UIColor( rgb: 0xFF0000)
DispatchQueue.main.asyncAfter(deadline: .now()+3.0 ) {
self.view.backgroundColor = UIColor( rgb: 0xFFFF00)
}
发布于 2018-05-15 13:57:57
你的问题用计时器解决了。只需在viewDidLoad函数中粘贴代码即可。
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(change), userInfo: nil, repeats: false)
类中的以下函数
@objc func change() {
view.backgroundColor = .black //change your color
}
发布于 2018-05-15 16:36:07
创建此函数(可以随时使用):
// MARK: Create delay
func delay(_ delay: Double, closure: @escaping ()->()) {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure)
}
然后,要创建所需的效果,请执行以下操作:
self.view.backgroundColor = UIColor( rgb: 0xFF0000) // Display red
delay(3) {
self.view.backgroundColor = UIColor( rgb: 0xFFFF00) // Display yellow
}
https://stackoverflow.com/questions/50346569
复制相似问题