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()
当我使用此代码并尝试打开属于同一导航控制器的另一个页面时,其导航栏看起来不同。我试图设置相同的导航栏背景色和色调,但它不起作用。但是,当我删除这些代码时,我使用的所有页面都正常工作。如何解决此问题
截图:
您的导航栏看起来是半透明的,但视图控制器没有延伸到它后面,因此您需要默认为黑色的窗口 或者
这是常见的行为。当您设置背景图像时,则无法设置新颜色。您需要将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欢迎您!若你们想移除当你们回到第一视图控制器时所显示的副作用,那个么使用我提到的库