Ios Swift 4:下一页的导航栏看起来不同

Ios Swift 4:下一页的导航栏看起来不同,ios,swift,uinavigationcontroller,uinavigationbar,uibarmetrics,Ios,Swift,Uinavigationcontroller,Uinavigationbar,Uibarmetrics,我刚刚用以下代码删除了导航栏阴影线: self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default) self.navigationController?.navigationBar.shadowImage = UIImage() 当我使用此代码并尝试打开属于同一导航控制器的另一个页面时,其导航栏看起来不同。我试图设置相同的导航栏背景色和色调,但它不起作用。但是,

我刚刚用以下代码删除了导航栏阴影线:

self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
当我使用此代码并尝试打开属于同一导航控制器的另一个页面时,其导航栏看起来不同。我试图设置相同的导航栏背景色和色调,但它不起作用。但是,当我删除这些代码时,我使用的所有页面都正常工作。如何解决此问题

截图:


您的导航栏看起来是半透明的,但视图控制器没有延伸到它后面,因此您需要默认为黑色的窗口

或者

  • 选中此框可扩展interface builder顶部栏下的VC
  • 将UIApplication.shared.keyWindow?.backgroundColor更改为.white
  • 使导航栏不透明

  • 这是常见的行为。当您设置背景图像时,则无法设置新颜色。您需要将setBackgroundImage设置为nil,然后在下一个ViewController中设置所需的新颜色

    这个库可以帮助你轻松地做这件事 PS:参见链接旁的示例

    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            configureAppearance()
        }
    
        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            configureAppearance()
        }
    
        func configureAppearance() {
            self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
            self.navigationController?.navigationBar.shadowImage = UIImage()
        }
    }
    
    
    class SecondViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            configureAppearance()
        }
    
        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
            configureAppearance()
        }
    
        func configureAppearance() {
            self.navigationController?.navigationBar.setBackgroundImage(nil, for: UIBarMetrics.default)
            self.navigationController?.navigationBar.barTintColor = UIColor.yellow
        }
    }
    

    你是否设置了导航项的颜色,先检查一下我不想用框架来解决这个小问题。你能帮助我如何自然地解决这个问题吗?是的,在viewWillAppear()中的第一个ViewController中设置自定义NavigationController外观,然后在第二个ViewController中设置另一个NavigationController外观。我在上面为你添加了一个例子。谢谢,伙计。我还修复了更改状态栏颜色和导航栏背景颜色的问题。@winnervswinner欢迎您!若你们想移除当你们回到第一视图控制器时所显示的副作用,那个么使用我提到的库