发布
社区首页 >问答首页 >iOS延迟改变背景颜色(快速)

iOS延迟改变背景颜色(快速)
EN

Stack Overflow用户
提问于 2018-05-15 09:21:31
回答 4查看 1.9K关注 0票数 0

我想设置视图的背景色,并在延迟一定时间后将其更改为另一种颜色。下面是我尝试的方法:

代码语言:javascript
代码运行次数:0
复制
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,则按钮将按预期运行,并在延迟期间保持禁用状态。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-05-15 09:27:41

你可以试试:

代码语言:javascript
代码运行次数:0
复制
self.view.backgroundColor = UIColor( rgb: 0xFF0000)

DispatchQueue.main.asyncAfter(deadline: .now()+3.0 ) {

  self.view.backgroundColor = UIColor( rgb: 0xFFFF00)

}
票数 3
EN

Stack Overflow用户

发布于 2018-05-15 13:57:57

你的问题用计时器解决了。只需在viewDidLoad函数中粘贴代码即可。

代码语言:javascript
代码运行次数:0
复制
Timer.scheduledTimer(timeInterval: 3, target: self, selector: #selector(change), userInfo: nil, repeats: false)

类中的以下函数

代码语言:javascript
代码运行次数:0
复制
@objc func change() {
  view.backgroundColor = .black  //change your color
}
票数 1
EN

Stack Overflow用户

发布于 2018-05-15 16:36:07

创建此函数(可以随时使用):

代码语言:javascript
代码运行次数:0
复制
// 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)
}

然后,要创建所需的效果,请执行以下操作:

代码语言:javascript
代码运行次数:0
复制
self.view.backgroundColor = UIColor( rgb: 0xFF0000) // Display red

delay(3) {
    self.view.backgroundColor = UIColor( rgb: 0xFFFF00) // Display yellow
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50346569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档