Ish*_*lla 9 uinavigationbar uinavigationcontroller ios swift
我想NavigationBar只透明一个ViewController.但是,在更改NavigationBar单个内容后ViewController,整个navigationController变为透明,并在几秒钟后崩溃.这是我的代码块:
override func viewWillAppear(animated: Bool) {
self.navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.translucent = true
self.navigationController!.view.backgroundColor = UIColor.clearColor()
}
override func viewDidDisappear(animated: Bool) {
self.navigationController!.navigationBar.setBackgroundImage(nil, forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.translucent = true
}
Run Code Online (Sandbox Code Playgroud)
它崩溃了
self.navigationController!.navigationBar.setBackgroundImage(nil, forBarMetrics: UIBarMetrics.Default)
Run Code Online (Sandbox Code Playgroud)
我们可以像这样实现这个要求:
在其中UIViewController,我们要清除的导航栏颜色应在明确UIViewController我们需要编写这些代码viewDidLoad,viewWillAppear和viewWillDisappear方法
在viewDidLoad方法中我们需要编写为了更好的显示结果如果我们没有写入放置代码片段然后navigation bar颜色将在显示后查看.
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
self.navigationController?.navigationBar.barTintColor = UIColor.clear
self.navigationController?.navigationBar.backgroundColor = UIColor.clear
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.isTranslucent = true
}
Run Code Online (Sandbox Code Playgroud)
当我们移动到其他屏幕(推另一个UIViewController)同样UINavigationController我们需要设置barTintColor否则它将显示为黑色.
小智 3
尝试给定的代码使导航栏在 swift 中透明:-
self.navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.translucent = true
self.navigationController!.view.backgroundColor = UIColor.clearColor()
self.navigationController?.navigationBar.backgroundColor = UIColor.clearColor()
Run Code Online (Sandbox Code Playgroud)
希望这段代码能帮助你..谢谢
| 归档时间: |
|
| 查看次数: |
8563 次 |
| 最近记录: |