【问题标题】:iOS 11 search bar has no top padding when status bar is hidden隐藏状态栏时,iOS 11 搜索栏没有顶部填充
【发布时间】: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 是一个简单的表格视图控制器,嵌套在导航视图控制器中,没有进一步的配置。让我快速地提出一个基本的演示。
  • 不需要。我可以复制。

标签: ios uisearchbar uisearchcontroller ios11


【解决方案1】:

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

    searchController.hidesNavigationBarDuringPresentation = false
    self.definesPresentationContext = true

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

【讨论】:

  • 它不能解决根本问题,但它是一个很好的解决方法。谢谢!
  • 我同意它不能解决根本问题。您应该向 Apple 提交错误。
  • self.edgesForExtendedLayout = [] 这行对我有用!
猜你喜欢
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
  • 1970-01-01
相关资源
最近更新 更多