iOS12 Swift 导航栏、状态栏设置

2,574 阅读1分钟

导语:乔布斯曾提到如果电脑开机速度提升10秒,每年可以少浪费100人的寿命!

如果节省你10秒钟时间,那...

1.导航栏背景色

    navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
    navigationController?.navigationBar.shadowImage = UIImage()
    navigationController?.navigationBar.backgroundColor = UIColor.init(red: 28/255.0, green: 31/255.0, blue: 39/255.0, alpha: 1)
lue: 39/255.0, alpha: 1)

注意:此时导航栏高度设置不再是KHeight,而是KHeight - KNavBarHeight,如下图示:

    let kHeight_Swift = UIScreen.main.bounds.size.height
    let isIphoneX = (kHeight_Swift == 812 || kHeight_Swift == 896)
    let kNavBar:CGFloat = isIphoneX ? 88 : 64

    self.tableView.frame = CGRect(x: 0, y: 0, width: kWidth_swift, height: kHeight_Swift - kNavBar)

2.导航栏背景色barTintColor

    navigationController?.navigationBar.isTranslucent = false
    navigationController?.navigationBar.barTintColor = UIColor.init(red: 28/255.0, green: 31/255.0, blue: 39/255.0, alpha: 1)

注意:isTranslucent必须设置为false,否则状态栏navigationBar.barTintColor设置不生效

  1. 状态栏文字颜色:黑色 .default | 白色 .lightContent
    override var preferredStatusBarStyle: UIStatusBarStyle{
        return .lightContent
    }

4.导航栏标题和返回按钮颜色。注意:设置方法不能放在viewDidLoad方法中,可以放到viewWillAppear或者viewDidAppear中。

   override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        //导航栏返回键&标题的颜色
        navigationController?.navigationBar.isTranslucent = false
        navigationController?.navigationBar.tintColor = .white
        navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor:UIColor.white,NSAttributedString.Key.font: UIFont.systemFont(ofSize: 17, weight: .bold)]
    }

5.退出控制器时还原导航栏设置

override func viewWillDisappear(_ animated: Bool) {
      super.viewWillDisappear(animated)
        navigationController?.navigationBar.isTranslucent = true
        navigationController?.navigationBar.backgroundColor = UIColor.clear
    }