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

Ben*_* Lu 6 uisearchbar ios uisearchcontroller ios11

将状态栏设置为隐藏时

override var prefersStatusBarHidden: Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)

并使用初始化普通 searchController

let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController
Run Code Online (Sandbox Code Playgroud)

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

解决方案表示赞赏

最小的例子

https://github.com/DJBen/SearchBarNoTopPadding

在此输入图像描述

mat*_*att 3

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

    searchController.hidesNavigationBarDuringPresentation = false
    self.definesPresentationContext = true
Run Code Online (Sandbox Code Playgroud)

另一种方法是继续以旧方式执行此操作,例如,将搜索控制器的搜索栏设置为导航项的titleView。这在 iOS 11 中仍然可以正常工作。