簡體   English   中英

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)

}

使用計時器解決了您的問題。 只需將代碼粘貼到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM