xcode – Swift中的延迟动作
发布时间:2020-12-15 02:04:00 所属栏目:百科 来源:网络整理
导读:我想让活动指标开始动画,然后在一秒钟后停止。 有没有人知道我该怎么做? class stuff {@IBOutlet weak var indicator: UIActivityIndicatorView! func iGotTriggeredBySomething { indicator.startAimating() //delay? indicator.stopAnimating() }} 谢谢
我想让活动指标开始动画,然后在一秒钟后停止。
有没有人知道我该怎么做? class stuff { @IBOutlet weak var indicator: UIActivityIndicatorView! func iGotTriggeredBySomething { indicator.startAimating() //delay? indicator.stopAnimating() } } 谢谢回答。 解决方法
dispatch_after()是延迟操作的标准方式。
indicator.startAnimating() let delay = 4.5 * Double(NSEC_PER_SEC) let time = dispatch_time(DISPATCH_TIME_NOW,Int64(delay)) dispatch_after(time,dispatch_get_main_queue()) { indicator.stopAnimating() } 见:dispatch_after – GCD in swift? Swift 3.0的更新 indicator.startAnimating() let delay = Int(4.5 * Double(1000)) DispatchQueue.main.after(when: .now() + .milliseconds(delay)) { indicator.stopAnimating() } 然而,根据Swift 3.0的精神,我认为扩展DispatchQueue将是一个更好的解决方案。 extension DispatchQueue { func delay(_ timeInterval: TimeInterval,execute work: () -> Void) { let milliseconds = Int(timeInterval * Double(1000)) after(when: .now() + .milliseconds(milliseconds),execute: work) } } 这让我们有一个非常好的 indicator.startAnimating() DispatchQueue.main.delay(4.5) { indicator.stopAnimating() } 更新2 挖掘Xcode 8.0测试版,我发现公共功能(时间:DispatchTime,秒:双) – > DispatchTime。所以,我想这是有效的 indicator.startAnimating() DispatchQueue.main.after(when: .now() + 4.5) { indicator.stopAnimating() } 我不认为有必要扩展DispatchQueue这个清洁的东西。 – Swift 3.1的更新 Swift 3.1有新的语法。他们只是喜欢改变事情不是他们。 indicator.startAnimating() DispatchQueue.main.asyncAfter(deadline: .now() + 4.5) { indicator.stopAnimating() } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |