在 Swift 中为单个视图自定义导航栏背景?
Customise the navigation bar background for a single view in Swift?
我有一个具有多个视图和控制器的应用程序,但我只想在其中一个视图上使用白色文本使顶部导航栏透明。对于所述视图,我在控制器中有以下代码:
override func viewDidLoad() {
super.viewDidLoad()
let bar:UINavigationBar! = self.navigationController?.navigationBar
bar.tintColor = UIColor.whiteColor()
bar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
bar.shadowImage = UIImage()
bar.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
}
当我打开应用程序时,其他视图上的顶部栏看起来和预期的一样,当我打开这个视图时,顶部栏看起来像我想要的那样。但是当我从这个视图导航到其他视图时,其他视图继承了上面代码对顶部栏所做的更改。
有没有办法防止这种情况发生,使导航栏仅针对特定视图发生变化,而其余部分保持不变?
提前致谢!
任何特定的导航控制器都只有一个导航栏,因此如果您在一个控制器中更改它,则所有控制器都会更改。解决这个问题的方法是将它改回您想要的 viewWillDisappear(或 viewDidDisappear)中其他控制器的任何内容。如果在弹出另一个控制器时返回同一实例,您可能还需要移动显示的代码以查看 willAppear。
我有一个具有多个视图和控制器的应用程序,但我只想在其中一个视图上使用白色文本使顶部导航栏透明。对于所述视图,我在控制器中有以下代码:
override func viewDidLoad() {
super.viewDidLoad()
let bar:UINavigationBar! = self.navigationController?.navigationBar
bar.tintColor = UIColor.whiteColor()
bar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
bar.shadowImage = UIImage()
bar.backgroundColor = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 0.0)
}
当我打开应用程序时,其他视图上的顶部栏看起来和预期的一样,当我打开这个视图时,顶部栏看起来像我想要的那样。但是当我从这个视图导航到其他视图时,其他视图继承了上面代码对顶部栏所做的更改。
有没有办法防止这种情况发生,使导航栏仅针对特定视图发生变化,而其余部分保持不变?
提前致谢!
任何特定的导航控制器都只有一个导航栏,因此如果您在一个控制器中更改它,则所有控制器都会更改。解决这个问题的方法是将它改回您想要的 viewWillDisappear(或 viewDidDisappear)中其他控制器的任何内容。如果在弹出另一个控制器时返回同一实例,您可能还需要移动显示的代码以查看 willAppear。