iOS Swift 3如何在动画完成后执行动作

时间:2017-03-11 15:51:07

标签: ios swift scroll swift3 uikit

我使用以下代码确保当用户打开键盘时,它会缓慢打开并推动视图。

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)

如果动画未完全执行,则tableview不会向下滚动。如何在执行animate后执行scrollToLastRow?

感谢您的帮助和评论!

1 个答案:

答案 0 :(得分:4)

只需使用动画的完成块。

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

这不会滚动tableview,直到动画结束。在这种情况下,4秒。