导航栏的颜色可以统一设置
let navigationBar = UINavigationBar.appearance()
//是否透明
navigationBar.isTranslucent = false
//导航栏颜色
navigationBar.barTintColor = UIColor.red
//导航栏文字颜色
navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
当我们要在某个控制器实现导航栏的透明效果时:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
//去掉底部线
self.navigationController?.navigationBar.shadowImage = UIImage()
//是否透明
self.navigationController?.navigationBar.isTranslucent = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
self.navigationController?.navigationBar.setBackgroundImage(nil, for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.isTranslucent = false
}
需要注意的是UINavigationBar的isTranslucent属性
- 当isTranslucent为true时,往控制器的View里面添加子view的时候,如果要从导航栏下面开始,那么子view的y要从64开始.
- 当isTranslucent为false时,往控制器的View里面添加子view的时候,如果要从导航栏下面开始,那么子view的y要从0开始.