Swift 3.0:延迟不到一秒
Swift 3.0: delay of less than a second
我正在尝试将延迟时间控制在一秒以内。我从网上找到了这段代码。但是,它不接受少于一秒的延迟。 Swift 中的 Grand Dispatch Concept 对我来说有点神秘。我应该如何修改此代码以创建 0.3 秒的延迟?
let deadlineTime = DispatchTime.now() + .seconds(1) //how to get 0.3 seconds here
DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
//code here
}
嗯,这很简单,不要用秒,用毫秒:
let deadlineTime = DispatchTime.now() + .milliseconds(300) // 0.3 seconds
只需将您需要的时间添加到 DispatchTime.now()
即可得到结果
let deadlineTime = DispatchTime.now() + 0.3 //Here is 0.3 second as per your requirement
DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
//code here
}
使用这个,会起作用
let delay = 2.5 * Double(NSEC_PER_SEC)
let time = DispatchTime.now() + Double(Int64(delay)) / Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: time, execute: {
self.view_Alert.alpha = 0
})
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
// your method after delay
}
记住,这将在主线程上执行。如果您不想要,请检查 DispatchQueue.global(qos:)
或 this reference
我正在尝试将延迟时间控制在一秒以内。我从网上找到了这段代码。但是,它不接受少于一秒的延迟。 Swift 中的 Grand Dispatch Concept 对我来说有点神秘。我应该如何修改此代码以创建 0.3 秒的延迟?
let deadlineTime = DispatchTime.now() + .seconds(1) //how to get 0.3 seconds here
DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
//code here
}
嗯,这很简单,不要用秒,用毫秒:
let deadlineTime = DispatchTime.now() + .milliseconds(300) // 0.3 seconds
只需将您需要的时间添加到 DispatchTime.now()
即可得到结果
let deadlineTime = DispatchTime.now() + 0.3 //Here is 0.3 second as per your requirement
DispatchQueue.main.asyncAfter(deadline: deadlineTime) {
//code here
}
使用这个,会起作用
let delay = 2.5 * Double(NSEC_PER_SEC)
let time = DispatchTime.now() + Double(Int64(delay)) / Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: time, execute: {
self.view_Alert.alpha = 0
})
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
// your method after delay
}
记住,这将在主线程上执行。如果您不想要,请检查 DispatchQueue.global(qos:)
或 this reference