美文网首页iOS Developer
iOS开发-更改导航栏的背景颜色和状态栏的颜色

iOS开发-更改导航栏的背景颜色和状态栏的颜色

作者: kim逸云 | 来源:发表于2017-03-30 12:29 被阅读248次

    之前在开发的时候,有几个界面需要更改导航栏UINavigationController的背景颜色和状态栏的颜色,倒是踩了一些坑,总结分享一下。

    1、改变导航栏的背景颜色和item的颜色

    self.navigationController?.navigationBar.setBackgroundImage(UIImage(named: "nav_bar_bg"), for: .default)
    self.navigationController?.navigationBar.tintColor = .white
    self.navigationController?.navigationBar.titleTextAttributes =
    [NSForegroundColorAttributeName: UIColor.white]
    
    • PS:1、"nav_bar_bg",图需要设计提供一张背景图给我们,宽度为1,如果想要覆盖到状态栏的话,高度为64即可。2、navigationBar.tintColor是更改按钮的文字颜色和图标的颜色,如果不需要,可以不写。3、navigationBar.titleTextAttributes是更改title的文字的颜色,如果不需要,也可以不写。

    2、修改状态栏的颜色要分情况:

    • ①、如果ViewController不是UINavigationController的子类,调用 preferredStatusBarStyle 是可以改变状态栏文字的颜色,相反则不能。因为 UINavigationController 有自己的状态栏,需要自己管理,所以它的子类是不会走 preferredStatusBarStyle 方法;如果想要某个viewController改变,可以使用 UINavigationBar.barStyle属性,或者 将导航栏隐藏后,
      self.navigationController.navigationBarHidden=YES,再重写 preferredStatusBarStyle方法。

    • ②、如果不是UINavigationController的子类,则需要在viewController里面重写

    override  var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
    }
    
    • ③、如果是UINavigationController的子类,则直接设置。
    self.navigationController?.navigationBar.barStyle = .black
    UIBarStyle枚举:.default、.black
    

    相关文章

      网友评论

        本文标题:iOS开发-更改导航栏的背景颜色和状态栏的颜色

        本文链接:https://www.haomeiwen.com/subject/otbuottx.html