美文网首页
iOS NavigationBar与StatusBar的控制

iOS NavigationBar与StatusBar的控制

作者: rainbowboy | 来源:发表于2020-03-28 11:18 被阅读0次
    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的控制

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