苹果的蓝色警告栏与我的导航控制器的导航栏重叠

时间:2019-01-24 16:33:56

标签: swift uinavigationcontroller uinavigationbar

我在UINavigationController内部有一个视图设置。蓝色警告栏显示在NavigationController的NavBar上方。在我项目的另一部分中,我在UITabController中设置了另一个UINavigationController。导航栏为蓝色警告栏提供了足够的空间,而无需覆盖。

我想念什么?如何防止蓝条覆盖NavBar? Blue Bar of Shame

1 个答案:

答案 0 :(得分:0)

我知道了!

这是实际发生的事情:

我在导航控制器内部有一个View Controller。该视图控制器包含“约会”列表。当用户点击“约会”时,应用程序将转到一个详细视图,该视图使用具有五个选项卡的选项卡栏控制器,每个选项卡都有自己的导航控制器。第一个标签具有一个地址字段,允许用户通过点击它来启动导航应用程序(Apple Maps,Google Maps或Waze)。

打开导航应用程序后,如果用户在导航应用程序仍处于打开状态时返回我的应用程序,并且他们没有提供适当的权限来禁止显示“ Blue Bar of Shame”,那么“ Blue Bar of Shame”将显示在我的导航上方吧,应该的。如果他们随后点击“后退”按钮以关闭“标签栏”控制器并返回到原始导航控制器,则“蓝色耻辱栏”将覆盖在导航栏顶部。

我不确定这是否是UIKit的错误。

要解决此问题,我做了什么:

我更改了约会列表选择打开所选约会详细信息的方式。我正在使用简单的segue。由于某些原因,从“约会详细信息”导航回“约会列表”视图时,当显示“蓝色耻辱”时,“约会列表”视图的导航栏无法说明展开的状态栏。我最终用“约会详细信息”选项卡栏控制器完全替换了显示“约会列表”的rootView。向后过渡时,我做相反的事情-将约会详细信息替换为约会列表;这似乎缓解了渲染问题。

然后,我为UIWindow创建了一个扩展,以模拟rootView替换期间的默认导航样式转换。