呈现UISearchController与状态栏重叠

时间:2017-02-22 11:41:28

标签: ios swift uisearchbar uisearchcontroller

我有一个UISearchController,当用户触摸按钮时,我会以编程方式呈现。我的问题是搜索栏与状态重叠(见截图)

enter image description here

我有以下代码用于展示UISearchController

func presentSearchController() {
    let resultsController = ResultsViewController()

    self.searchController = UISearchController(searchResultsController: resultsController)
    self.searchController.searchBar.searchBarStyle = .prominent

    searchController.hidesNavigationBarDuringPresentation = false
    searchController.searchResultsUpdater = resultsController

    self.definesPresentationContext = true

    self.present(self.searchController, animated: true, completion: nil)
}

修改:我的问题不是UISearchBar overlaps status bar in iOS的重复,因为我没有直接使用搜索栏或它的框架

1 个答案:

答案 0 :(得分:4)

我已通过删除以下行解决了该问题:

self.definesPresentationContext = true

我的方案中不需要这样做的原因是我正在调用self.present(self.searchController, animated: true, completion: nil)

更新:

虽然以上确实解决了我的问题,但是当显示SearchController时,它打破了我的navigationController中推送viewController的功能(searchController将保持在顶部而viewController被推到它下面)

在重新审视问题时,以下是我所做的修复:

添加以下

searchController.hidesNavigationBarDuringPresentation = true self.definesPresentationContext = true

然后在故事板中启用“Under Top Bars”并启用“Under Opaque Bars”