推送期间导航栏上的奇怪动画

Strange animation on the navigation bar during push

我有如下故事板。

当我点击“Push ViewController 2”时,出现了一个奇怪的动画

我将 NavigationController.view.backgroundColor 或 TabBarController.view.background 设置为白色。但它不起作用。 我不想将 navigationBar.translucent 设置为 NO。

我怎样才能摆脱它?

您没有在 navigationBar 下扩展视图控制器 (在导航中推送)(这就是为什么您看到模糊红色视图控制器 - 这是前一个 - 在栏下方).

设置您的 edgesForExtendedLayoutextendedLayoutIncludesOpaqueBars。在这种情况下,navigationBar.isTranslucent 也必须是 true

或者您可以关闭 navigationBar 的半透明效果并将其颜色设置为您想要的任何颜色。

设置以下Animates勾选取消勾选

当您在 TabView application 中使用 NavigationController 时。将 NavigationController 分别嵌入每个 ViewController 以避免异常行为是一种常见的做法,它还为您提供了一种更好的方法来控制单独实例中的 NavigationController。按照情节提要布局修复奇怪的动画。

输出:

PS: @skJosh 评论也提到了同样的想法。

更新: 将下面的代码粘贴到您的 DetailViewController 中以隐藏和取消隐藏您的 TabBar。

override func viewWillAppear(_ animated: Bool) {
    tabBarController?.tabBar.isHidden = true
}

override func viewWillDisappear(_ animated: Bool) {
    tabBarController?.tabBar.isHidden = false
}