我有一个应用程序,它需要在第一个ViewController上具有清晰的NavigationBar,在第二个上需要白色NavigationBar。
问题是,当我在各个控制器之间移动时(通过UIBarButton),这条可怕的白色条纹仍然存在。怎么了?
//for first ViewController to hide navigationBar, second is the same, but "true" and .white
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.isTranslucent = false
navigationController?.navigationBar.backgroundColor = .clear
navigationController?.navigationBar.setValue(false, forKey: "hidesShadow")
At first start it works fine, but when you return with button:
问题是,您的两个控制器都嵌入具有单个导航栏的单个导航控制器中。
因此,当您在第二个控制器上更改导航栏的颜色和样式,然后返回到您的第一个控制器时,这些更改仍然存在,因此您会看到白色的栏。
我建议您隐藏第一个控制器的工具栏,然后在第二个控制器上显示它。或在viewWillAppear
方法中每次更改其样式(颜色,背景图像)。
请勿修改第一个View控制器导航栏。在要从第二个视图控制器中包含的AppDelegate中添加修改和更改。在第一个视图控制器中,将导航栏隐藏在viewWillAppear中,然后再次显示在viewWillDisappear中。
在第一视图控制器中
override func viewWillAppear(_ animated: Bool) {
navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewWillDisappear(_ animated: Bool) {
navigationController?.setNavigationBarHidden(false, animated: true)
}