UISearchController的UITableView顶部有额外的空间

kie*_*tux 4 uisearchbar ios uisearchcontroller

我设置了这样一个UISearchController:

    searchResultsController = SearchResultsController()

    searchController = UISearchController(searchResultsController: searchResultsController)
    searchController.searchResultsUpdater = self
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = true
    searchController.searchBar.searchBarStyle = .minimal
    searchController.delegate = self
    definesPresentationContext = true

    navigationItem.titleView = searchController.searchBar
Run Code Online (Sandbox Code Playgroud)

SearchResultsController只是一个UITableView用于显示搜索结果的视图控制器.

当设备处于纵向状态时,开始在纵向模式下搜索,表视图顶部有一个额外的空间(RESULT标题是表视图的开头)

设备纵向 - 以纵向开始搜索

然后,如果我旋转到横向模式,空间消失:

横向设备 - 以纵向开始搜索

当设备处于横向模式并且我开始搜索时,表格视图被切断:

横向设备 - 开始横向搜索

然后如果我旋转到肖像,表视图完全适合:

设备纵向 - 开始横向搜索

额外的空间高度与状态栏高度完全相同.所以我想知道这里有一些与状态栏有关的东西.

如果我将搜索栏指定为表视图,则不会发生这种情况tableHeaderView.只有当搜索栏在导航标题中时才会发生.谁知道为什么?

ini*_*333 8

显然automaticallyAdjustsScrollViewInsets是被弃用了.

iOS 11.0中不推荐使用'automatedAdjustsScrollViewInsets':使用UIScrollView的contentInsetAdjustmentBehavior代替

所以我建议你这样做:

searchResultsController.tableView.contentInsetAdjustmentBehavior = .never
Run Code Online (Sandbox Code Playgroud)

它对我来说就像一个魅力.一些有用的文档:

contentInsetAdjustmentBehavior

UIScrollViewContentInsetAdjustmentBehavior