如何在UISearchController演示/解雇动画旁边制作动画?

Ort*_*ntz 10 cocoa-touch uikit ios uisearchcontroller

我有一个带有搜索栏的表格视图tableHeaderView,由a管理UISearchController.我使用标准的UISearchController演示动画.

我想为与searchBar动画具有相同持续时间的另一个视图设置动画.我尝试了各种持续时间值但是它们在任何时候都不完全匹配.

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

不幸的是我找不到<UIViewControllerTransitionCoordinator>对象的引用.具体来说searchController.presentingViewController.transitionCoordinator就是nil.

jua*_*njo 5

我遇到了同样的问题,除了的介绍外,我还需要对其他观点进行动画处理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)
}
Run Code Online (Sandbox Code Playgroud)

我也有动画的意见,同时驳回搜索控制器,在这种情况下,我实现willDismissSearchController的方法UISearchControllerDelegate,将transitionCoordinator不在此方法可立即但进行异步调用的伎俩

解雇:

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

这适用于iOS 9

  • 如果您依赖用户点击搜索栏来自动呈现`UISearchController`,那么您可以在`willPresentSearchController` 中使用与@juanjo 在`willDismissSearchController` 中使用的技术相同的技术 (3认同)