[英]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)
}
使用計時器解決了您的問題。 只需將代碼粘貼到viewDidLoad函數中即可。
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(change), userInfo: nil, repeats: false)
班級內的跟隨功能
@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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.