一. 导航栏 统一返回按钮样式
1.创建一个基类BaseViewController 继承自UIViewController, 其余所有的ChildViewController都继承自BaseViewController 在BaseViewController设置返回按钮的样式,代码如下:
swift 版本:5.0
//去掉按钮右边的文字
navigationItem.backBarButtonItem = UIBarButtonItem.init(title: "", image:nil, primaryAction: nil, menu: nil)
//设置按钮的颜色
navigationItem.backBarButtonItem?.tintColor = UIColor(red: 35 / 255, green: 35 / 255, blue: 35 / 255, alpha: 1.0)
以上代码将就可以实现返回按钮样式统一
二. 自定义导航栏
1.设置导航栏透明
工作中经常会遇到首页无导航栏第二页有导航栏这样的情况,解决方法一般有两种: 1.隐藏导航栏 2.设置导航栏透明 由于隐藏导航栏会导致一些特殊的效果,所以接下来介绍一下如何设置导航栏透明 同上在BaseViewController中添加代码如下:
//设置导航栏按钮为透明色图片
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
//设置导航栏阴影为透明色图片
navigationController?.navigationBar.shadowImage = UIImage()
这样导航栏就透明了,效果如下:
但是这样有个问题,所有的导航栏都会变透明,解决方案代码如下:
func addNavBar(_ color:UIColor){
//设置导航栏高度(此处可根据导航栏高度的不同来获取导航栏高度)
let size = CGSize(width: view.bounds.width, height: 91)
//纯色创建UIImage
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
color.setFill()
UIRectFill(CGRect(origin: .zero, size: size))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
//将UIImage添加到UIImageView
let navImageView = UIImageView(image: image)
view .addSubview(navImageView)
}
在需要导航栏的页面,调用方法如下:
override func viewDidLoad() {
super.viewDidLoad()
self.title = "第二页"
//添加导航栏
addNavBar(.red)
}
效果如下图: