在Swift的早期版本中,可以使用以下代码创建延迟:
let time = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW), 4 * Int64(NSEC_PER_SEC))
dispatch_after(time, dispatch_get_main_queue()) {
//put your code which should be executed with a delay here
}
但是现在,在Swift 3中,Xcode自动更改了6个不同的东西,但随后出现了以下错误:"Cannot convert DispatchTime.now
to expected dispatch_time_t
aka UInt64
“。
如何在Swift 3中运行代码序列之前创建延迟?
发布于 2016-06-26 01:30:44
经过大量的研究,我终于弄明白了这一点。
DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) { // Change `2.0` to the desired number of seconds.
// Code you want to be delayed
}
这在Swift 3和Swift 4中创建了所需的“等待”效果。
灵感来自this answer的一部分。
发布于 2019-07-25 19:09:59
一种方法是使用DispatchQueue.main.asyncAfter
,因为很多人已经回答了。
另一种方法是使用perform(_:with:afterDelay:)
。More details here
perform(#selector(delayedFunc), with: nil, afterDelay: 3)
@IBAction func delayedFunc() {
// implement code
}
发布于 2018-02-28 21:09:50
//x秒后运行函数
public static func runThisAfterDelay(seconds: Double, after: @escaping () -> Void) {
runThisAfterDelay(seconds: seconds, queue: DispatchQueue.main, after: after)
}
public static func runThisAfterDelay(seconds: Double, queue: DispatchQueue, after: @escaping () -> Void) {
let time = DispatchTime.now() + Double(Int64(seconds * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC)
queue.asyncAfter(deadline: time, execute: after)
}
//使用:-
runThisAfterDelay(seconds: x){
//write your code here
}
https://stackoverflow.com/questions/38031137
复制相似问题