【问题标题】:iOS 11 black bar appears on navigation bar when pushing view controller推送视图控制器时,导航栏上出现 iOS 11 黑条
【发布时间】:2018-03-08 07:25:24
【问题描述】:

我只有在 iOS 11 中才有这个奇怪的错误,在较低的 iOS 中,一切正常。 问题是每当推送到视图控制器时,导航栏顶部都会出现一个黑色空间。有没有其他人遇到过这个问题以及如何解决?

【问题讨论】:

  • 发布您的代码,从图像中找出一些东西是在黑暗中拍摄
  • @mlegg 这只是普通的 pushViewController。这个错误发生在应用程序的每个地方,而不仅仅是一个地方。此外,在iOS10、iOS9和iOS8中,它运行良好。
  • 你能检查一下你的print(view.safeAreaInsets)
  • 我查了一下,全是零。
  • 你解决过这个问题吗?我有同样的问题

标签: swift navigationbar ios11


【解决方案1】:

问题在于,在双倍速度的情况下,您的视图尺寸小于导航控制器视图尺寸。

因此,当您滚动浏览视图的框架时,内容偏移量会发生变化,并且速度也会加倍。
这可以解释这种行为。 请尝试以下解决问题。

extendedLayoutIncludesOpaqueBars = true

您应该在UIViewControllerUITableViewControllerUICollectionViewController 中添加此行

【讨论】:

  • 救世主 :) 完美运行
  • 优秀的解决方案
  • 与 UICollectionViewController 和 UISearchController 一起工作就像一个魅力。非常感谢!
  • 这仍然是最好的方法
【解决方案2】:

您可以在 iOS 11 的搜索栏中添加高度 44 的约束。

if #available(iOS 11.0, *) {
    searchBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
}

【讨论】:

  • 这个解决方案会降低 iPhone X 中搜索栏的高度。
【解决方案3】:

遇到了同样的问题并通过删除以下部分来解决它 viewWillDisappear 期间来自父控制器的代码

self.navigationController?.setNavigationBarHidden(true, animated: animated)

【讨论】: