Swift navigationbar 导航栏、状态栏样式修改

1.navigationbar 全透明

    *// navigationbar *全透明
   self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
   self.navigationController?.navigationBar.shadowImage = UIImage()
   self.navigationController?.navigationBar.translucent = true

2.导航栏样式修改

*// *导航栏* *样式修改
func navigationBarChange() {
    
    *// *修改导航背景色
    self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    
    *// *修改导航栏文字颜色
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor()]
    
    *// *修改导航栏按钮颜色
    self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
    
    *// *修改导航背景图片*  *不包含状态栏:*44*点(*88*像素)*  *包含状态栏:*64*点*(128*像素)
    self.navigationController?.navigationBar
        .setBackgroundImage(UIImage(named: "bg"), forBarMetrics: .Default)
}

        //导航栏去黑线
        navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
        navigationController?.navigationBar.shadowImage = UIImage()

3.状态栏修改:

//状态栏白色
override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

//隐藏状态栏
override func prefersStatusBarHidden() -> Bool {
    return true
}

没有导航栏情况下,状态栏修改

//全局:全工程的状态栏都要变白色:

//1. 在Info.plist中设置UIViewControllerBasedStatusBarAppearance 为NO

//2. 在根视图 启动时候加上下面代码 

UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent

//局部:只是部分控制器需要修改状态栏文字的颜色:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
}

提示:如果在使用导航情况下修改状态栏没有效果,可以重写nv的子类
例如:

class NavigationCustom: UINavigationController{
     override func preferredStatusBarStyle() -> UIStatusBarStyle {
          return UIStatusBarStyle.Default
    }

}

最后记得更改自定义类

Swift navigationbar 导航栏、状态栏样式修改_第1张图片
NavigationCustom.png

你可能感兴趣的:(Swift navigationbar 导航栏、状态栏样式修改)