iOS 延迟更改背景颜色 (swift)
iOS changing background color with delay (swift)
我想设置视图的背景颜色,并在一定延迟后将其更改为另一种颜色。这是我的尝试方式:
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
,该按钮将按预期运行并在延迟期间保持禁用状态。
你可以试试:
self.view.backgroundColor = UIColor( rgb: 0xFF0000)
DispatchQueue.main.asyncAfter(deadline: .now()+3.0 ) {
self.view.backgroundColor = UIColor( rgb: 0xFFFF00)
}
您的问题已通过使用 Timer 解决。只需将代码粘贴到 viewDidLoad 函数中即可。
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(change), userInfo: nil, repeats: false)
您的 class
中的以下函数
@objc func change() {
view.backgroundColor = .black //change your color
}
创建这个函数(可以随时使用):
// 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
}
试试这个 swift 5
self.view.backgroundColor = UIColor( rgb: 0xFF0000)
DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in
self?.view.backgroundColor = UIColor( rgb: 0xFFFF00)
}
我想设置视图的背景颜色,并在一定延迟后将其更改为另一种颜色。这是我的尝试方式:
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
,该按钮将按预期运行并在延迟期间保持禁用状态。
你可以试试:
self.view.backgroundColor = UIColor( rgb: 0xFF0000)
DispatchQueue.main.asyncAfter(deadline: .now()+3.0 ) {
self.view.backgroundColor = UIColor( rgb: 0xFFFF00)
}
您的问题已通过使用 Timer 解决。只需将代码粘贴到 viewDidLoad 函数中即可。
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(change), userInfo: nil, repeats: false)
您的 class
中的以下函数@objc func change() {
view.backgroundColor = .black //change your color
}
创建这个函数(可以随时使用):
// 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
}
试试这个 swift 5
self.view.backgroundColor = UIColor( rgb: 0xFF0000)
DispatchQueue.main.asyncAfter(deadline: .now() + 3) { [weak self] in
self?.view.backgroundColor = UIColor( rgb: 0xFFFF00)
}