导航标题栏出现故障,返回时显示灰色背景

Navigation title bar is glitchy, it shows a grey background when going back

这张 gif 将帮助您了解我的问题所在:

在我的一些导航控制器上,我以前从未遇到过这个问题,而且我很难调试这个问题。

重现步骤:克隆https://github.com/Jasperav/GlitchedNavigationBar

  1. 创建新项目
  2. 在标签栏控制器中嵌入现有的 viewcontroller
  3. 在导航栏控制器中嵌入相同的 viewcontroller
  4. 在故事板中添加一个新的viewcontroller
  5. 在新的 viewcontroller 上,点击 Hide Bottom Bar on Push(这会导致问题)
  6. 在第一个 viewcontroller 上添加一个按钮,它将显示新的 viewcontroller。现在我们遇到了问题。

我是 运行 Xcode 10 和 swift 4.2

发生这种情况是因为您的导航栏是半透明的,并且在导航栏下方显示了您的控制器的一部分。您的顶部控制器中有一张地图,当您向后导航时,它会在导航栏下为它设置动画,这就是闪烁的原因。

要仅在一个控制器中更改导航栏的半透明效果,您需要将此添加到您的 viewDidLoad 方法中:

navigationController?.navigationBar.isTranslucent = false

或者,如果您想全局更改它,则将其添加到应用程序委托中的 didFinishLaunchingWithOptions 方法中:

UINavigationBar.appearance().isTranslucent = false