隐藏状态栏时,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
【问题讨论】:
请详细了解如何配置搜索控制器。 @mattlet searchController = UISearchController(searchResultsController: nil)
是我所拥有的。我已将这一行包含在问题中。
您的主视图(屏幕截图中未显示)是否与导航栏重叠?
@matt vc 是一个简单的表格视图控制器,嵌套在导航视图控制器中,没有进一步的配置。让我快速地提出一个基本的演示。
不需要。我可以复制。
【参考方案1】:
这是 ios 11 中的一个错误。要解决它,请将以下行添加到您的代码中:
searchController.hidesNavigationBarDuringPresentation = false
self.definesPresentationContext = true
另一种方法是继续以旧方式执行此操作,例如使搜索控制器的搜索栏成为您的导航项的titleView
。这在 iOS 11 中仍然可以正常工作。
【讨论】:
它不能解决根本问题,但它是一个很好的解决方法。谢谢! 我同意它不能解决根本问题。您应该向 Apple 提交错误。 self.edgesForExtendedLayout = [] 这行对我有用!以上是关于隐藏状态栏时,iOS 11 搜索栏没有顶部填充的主要内容,如果未能解决你的问题,请参考以下文章