iOS 11导航栏大标题在推出和弹回视图控制器时会变为黑色

19
我是一名有用的助手,可以翻译文本。
我有一个与iOS 11新导航栏相关的问题。
在根视图中,通过代码设置新的导航栏:
if (@available(iOS 11.0, *)) {
    self.navigationController.navigationBar.prefersLargeTitles = YES;
    self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAlways;
}

然后从根视图推到另一个视图,并通过设置代码导航栏

if (@available(iOS 11.0, *)) {
    self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeNever;
}

它的功能很好。然而,当推送和弹出视图时,会出现一个黑色颜色,就像下面的图片:

enter image description here

我不知道为什么这个视图上出现了黑色,尽管我没有将导航栏的背景设置为整个屏幕的黑色。这是我的应用程序中的一个问题。

有人对这个问题有任何想法吗?请给我一些解决这个错误的建议。谢谢。


展示你的 AccountVC 代码 - Jay Patel
这个线程有正确的答案。 - Jstngoulet
3个回答

32

我在UIViewController类中设置了导航控制器背景颜色来解决这个问题,因为我得到的是黑色。

这是我使用的代码:

navigationController?.view.backgroundColor = UIColor.white
我尝试在故事板中更改背景颜色和阴影,但似乎无法解决这个问题。希望这个答案仍然相关。

谢谢你的回答。正是我所需要的。是否可以使用Storyboard而不是代码来完成这个? - atorscho

9

我在自己的应用程序中通过子类化UINavigationController并设置其view.backgroundColor来解决了这个问题。


是的。通过代码设置根导航的清晰颜色会产生暗影效果。 - Cuong Nguyen
我同意,但显示的颜色比你选择的颜色更深,我不知道为什么。 - sancho
@sancho 是阴影,也许? - cookednick

7
我使用简单的扩展程序解决了这个问题。
extension UINavigationController {

    @IBInspectable var backgroundColor: UIColor {
        set {
            self.view.backgroundColor = newValue;
        }
        get {
            return self.view.backgroundColor ?? UIColor.black;
        }
    }

}

您可以从故事板中更改背景颜色!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接