iOS Swift 3 как да извършите действие след като анимацията е готова

Използвам следния код, за да се уверя, че когато потребителят отвори клавиатурата, тя се отваря бавно и избутва изгледа нагоре.

func keyboardWasShown(notification: NSNotification){
    tableViewChat?.tableView.isScrollEnabled = true
    let info2 = notification.userInfo!
    let keyboardFrame: CGRect = (info2[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue

    UIView.animate(withDuration: 4, animations: { () -> Void in
        self.bottomConstraint.constant = keyboardFrame.size.height - self.navigationController!.navigationBar.frame.height
    })
}

До тук всичко работи като чар. Сега искам да изпълня този ред, след като анимацията приключи.

self.tableViewChat?.scrollToLastRow(animationBool: true)

Ако анимацията не се изпълни напълно, табличният изглед няма да се превърти достатъчно надолу. Как може да се изпълни scrollToLastRow след изпълнение на анимацията?

Благодаря ви за помощта и коментарите!


person Jochen Österreicher    schedule 11.03.2017    source източник


Отговори (1)


Просто използвайте блока за завършване на анимацията.

UIView.animate(withDuration: 4, animations: { () -> Void in
    self.bottomConstraint.constant = keyboardFrame.size.height - self.navigationController!.navigationBar.frame.height
 },completion{
    self.tableViewChat?.scrollToLastRow(animationBool: true)
})

Това няма да превърти табличния изглед, докато анимацията не приключи. В този случай 4 секунди.

person TheValyreanGroup    schedule 11.03.2017