推送视图控制器时,导航栏上出现 iOS 11 黑条

Posted

技术标签:

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

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

【问题讨论】:

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

【讨论】:

以上是关于推送视图控制器时,导航栏上出现 iOS 11 黑条的主要内容,如果未能解决你的问题,请参考以下文章

iOS 6 上出现导航栏和表格视图之间的黑条

从 UIView ios 推送视图控制器

标签栏上方出现黑条

如何在情节提要的标签栏上启动导航控制器的第三个视图控制器

iOS 5 推送通知 - 从开发的角度来看

UITableView 出现奇怪的黑条