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的大小和背景色也可以通过这种方式来控制
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容