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

Posted

技术标签:

【中文标题】隐藏状态栏时,iOS 11 搜索栏没有顶部填充【英文标题】:iOS 11 search bar has no top padding when status bar is hidden 【发布时间】:2017-09-21 23:11:57 【问题描述】:

将状态栏设置为隐藏

override var prefersStatusBarHidden: Bool 
    return true

并初始化一个 plain searchController 使用

let searchController = UISearchController(searchResultsController: nil)
navigationItem.searchController = searchController

如果不编辑的话看起来很正常,但是如果你点击搜索栏,导航标题会隐藏,搜索栏和顶部边缘之间的填充很小,这在视觉上是非常破碎的。

感谢您的解决方案。

最小示例

https://github.com/DJBen/SearchBarNoTopPadding

【问题讨论】:

请详细了解如何配置搜索控制器。 @matt let searchController = UISearchController(searchResultsController: nil) 是我所拥有的。我已将这一行包含在问题中。 您的主视图(屏幕截图中未显示)是否与导航栏重叠? @matt vc 是一个简单的表格视图控制器,嵌套在导航视图控制器中,没有进一步的配置。让我快速地提出一个基本的演示。 不需要。我可以复制。 【参考方案1】:

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

    searchController.hidesNavigationBarDuringPresentation = false
    self.definesPresentationContext = true

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

【讨论】:

它不能解决根本问题,但它是一个很好的解决方法。谢谢! 我同意它不能解决根本问题。您应该向 Apple 提交错误。 self.edgesForExtendedLayout = [] 这行对我有用!

以上是关于隐藏状态栏时,iOS 11 搜索栏没有顶部填充的主要内容,如果未能解决你的问题,请参考以下文章

当我点击带有动画的搜索栏时,iOS隐藏导航栏

ios15在隐藏导航栏时向后半滑动会留下顶部空白空间 - SwiftUI

隐藏导航栏时的假状态栏颜色

隐藏导航栏时隐藏状态栏 - SWIFT iOS8

iOS 7隐藏导航栏时如何更改状态栏的颜色?

隐藏状态栏时,我的导航栏在 iOS7 中向上移动