-
NavigationBar透明控制
NavigationBar默认是半透明的。isTranslucent
属性true
表示半透明,否则不透明。完全透明需要修改背景图和隐藏底部阴影线。代码如下
//这个看到的NavigationBar就是透明的
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)//去除navigationBar的背景色
self.navigationController?.navigationBar.shadowImage = UIImage()//去掉navigationbar 底部的细线
-
NavigationBar左边按钮或者右边按钮文字颜色
//这里注意不是修改title的颜色
navigationController?.navigationBar.tintColor = UIColor.yellow
-
NavigationBar修改背景色
//前提是不修改NavigationBar 的backGroundImage,就可以修改NavigationBar的背景色,并且会修改StatusBar的背景色
navigationController?.navigationBar.barTintColor = UIColor.purple
-
修改StatusBar的文字颜色
StatusBar
只有两种颜色,黑色和白色。但是对状态的处理也分两种场景,是否被NavigationBar
导航。
//被NavigationBar导航
navigationController?.navigationBar.barStyle = .black
//导航状态下,通过这个属性修改statusBar的颜色,并且需要设置plist中UIViewControllerBasedStatusBarAppearance的值为true。因为NavigationBar导航时,StatusBar跟NavigationBar状态一体,所以通过控制NavigaitonBar来控制StatusBar的文字颜色显示
//不被NavigationBar导航,通过Vc里的一个方法来控制preferredStatusBarStyle
override var preferredStatusBarStyle: UIStatusBarStyle {
//NavigationControlle状态下,nav不会调用子vc的preferredStatusBarStyle,需要通过设置navigationBar的barStyle来修改文字颜色
return .lightContent
}
-
修改NavigationBar title的颜色
navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white]//修改navigationBar title 颜色
//同样title的大小和背景色也可以通过这种方式来控制
网友评论