当状态栏被隐藏时,iOS 11搜索栏没有顶部填充

时间:2017-09-21 23:11:58

标签: ios uisearchbar uisearchcontroller ios11

将状态栏设置为隐藏

override var prefersStatusBarHidden: Bool {
    return true
}

并使用

初始化 plain searchController
let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController

如果未经编辑,这似乎正常,但是如果您点击搜索栏,导航标题将隐藏,搜索栏和顶部边缘之间几乎没有填充,这在视觉上非常破碎。

感谢您的解决方案。

最低示例

https://github.com/DJBen/SearchBarNoTopPadding

enter image description here

1 个答案:

答案 0 :(得分:3)

这是iOS 11中的一个错误。要解决此问题,请在代码中添加以下行:

    searchController.hidesNavigationBarDuringPresentation = false
    self.definesPresentationContext = true

另一种方法是以旧的方式继续这样做,例如使搜索控制器的搜索栏成为导航项titleView。这在iOS 11中仍然可以正常工作。