如何与 UISearchController presentation/dismissal 动画一起制作动画?

How to animate alongside a UISearchController presentation/dismissal animation?

我在 tableHeaderView 中有一个带有搜索栏的 table 视图,由 UISearchController 管理。我使用标准 UISearchController 演示动画。

我想用与 searchBar 动画相同的持续时间为另一个视图设置动画。我尝试了各种持续时间值,但遗憾的是它们并不总是完全匹配。

所以我认为使用 -[UIViewControllerTransitionCoordinator animateAlongsideTransition:completion:] API 会很棒。

很遗憾,我找不到 <UIViewControllerTransitionCoordinator> 对象的引用。具体来说,searchController.presentingViewController.transitionCoordinatornil.

我遇到了同样的问题,我需要在显示 UISearchController 的同时为其他视图设置动画;在调用呈现搜索控制器后,transitionCoordinator 变得可用,您可以添加代码来为您的视图设置动画

呈现:

func search() {
    let searchController = UISearchController(searchResultsController: resultsController)
    // Configure search controller
    self.present(searchController, animated: true) {}

    self.transitionCoordinator?.animate(alongsideTransition: { (context) in
        // animate other views
    }, completion: nil)
}

我还必须在关闭搜索控制器时对视图进行动画处理,在这种情况下,我实现了 UISearchControllerDelegatewillDismissSearchController 方法,transitionCoordinator 在此无法立即使用方法,但进行异步调用就可以了

正在关闭:

func willDismissSearchController(_ searchController: UISearchController) {
    DispatchQueue.main.async {
        searchController.transitionCoordinator?.animate(alongsideTransition: { (context) in
            // animate views
        }, completion: nil)
    }
}

这对我有用 iOS 9