2017-02-12 15 views
0

Я пытаюсь сделать задержку менее секунды. Я нашел этот код из Интернета. Однако он не принимает задержки менее секунды. Концепция Grand Dispatch в Swift для меня немного загадка. Как мне изменить этот код, чтобы создать задержку в 0,3 секунды?Swift 3.0: задержка менее секунды

let deadlineTime = DispatchTime.now() + .seconds(1) //how to get 0.3 seconds here 
    DispatchQueue.main.asyncAfter(deadline: deadlineTime) {   
     //code here 
    } 

ответ

4

Ну, это очень просто, не используйте секунды, используйте миллисекунды:

let deadlineTime = DispatchTime.now() + .milliseconds(300) // 0.3 seconds 
+2

В качестве альтернативы: 'пусть deadlineTime = DispatchTime.now() + 0.3' –

1

просто добавить обязательное для заполнения времени DispatchTime.now() и вы получите результат

let deadlineTime = DispatchTime.now() + 0.3 //Here is 0.3 second as per your requirement 
    DispatchQueue.main.asyncAfter(deadline: deadlineTime) {   
     //code here 
    } 
+0

или даже просто' DispatchQueue.main.asyncAfter (крайний срок: .Теперь() + 0,3) ' – vacawama

+0

Существует ничего нового в этом ответе, он просто повторяет первый, включая комментарий. –

-1

использование это будет работать

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 
}) 
0
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) { 
    // your method after delay 
} 

Помните, что это будет выполняться в основном потоке. Если вы хотите, в противном случае, проверьте DispatchQueue.global(qos:) или this reference