iOS NavigationBar与StatusBar的控制

  1. NavigationBar透明控制

NavigationBar默认是半透明的。isTranslucent属性true表示半透明,否则不透明。完全透明需要修改背景图和隐藏底部阴影线。代码如下

//这个看到的NavigationBar就是透明的
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)//去除navigationBar的背景色
 self.navigationController?.navigationBar.shadowImage = UIImage()//去掉navigationbar 底部的细线
  1. NavigationBar左边按钮或者右边按钮文字颜色

//这里注意不是修改title的颜色
navigationController?.navigationBar.tintColor = UIColor.yellow
  1. NavigationBar修改背景色

//前提是不修改NavigationBar 的backGroundImage,就可以修改NavigationBar的背景色,并且会修改StatusBar的背景色
navigationController?.navigationBar.barTintColor = UIColor.purple

  1. 修改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
    }

  1. 修改NavigationBar title的颜色


navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white]//修改navigationBar title 颜色
//同样title的大小和背景色也可以通过这种方式来控制

你可能感兴趣的:(iOS NavigationBar与StatusBar的控制)