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