1. 根据导航颜色自动可调整状态条颜色
说明
:状态条只有黑白2种颜色(默认黑色)。只要设置导航条颜色(默认白色),状态条会自动调整,导航条设置为白(黑)色时状态条自动调整为黑(白)色。
![](https://img.haomeiwen.com/i1892430/93f4f805140d4db5.png)
![](https://img.haomeiwen.com/i1892430/ab459fa4bd1b0db8.png)
![](https://img.haomeiwen.com/i1892430/84a6728c38a4b39c.png)
2. 自定义导航条颜色
2.1 无导航的情况下
(1)整个app无导航时定制全局状态栏颜色—在总代理AppDelegate.swift中设置
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
//app无导航时在总代理中定制全局状态条颜色;但有导航时在任何地方设置状态栏都不会生效,只有和导航控制器有关的设置才会生效(拓展UINavigationController并设置计算属性childForStatusBarStyle)
UIApplication.shared.statusBarStyle = .lightContent
return true
}
(2)app某些页面无导航—在视图对应的控制器中单独设置状态条颜色,从而使每个控制器都有自己的状态栏颜色
//状态条(电池栏)颜色:计算属性
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent//白色
}
2.2 有导航的情况下
备注
:导航控制器由一个个子页面构成,当app使用导航控制器时,默认会控制所有导航子页面状态条样式;此时每个子页面控制器自己定义的状态条样式不会生效。
(1)新建一个swift扩展文件NaviExt.swift,对导航控制器进行调整,从而控制导航
//
// NaviExt.swift
// JackUChat
//
// Created by 徐云 on 2019/2/26.
// Copyright © 2019 Liy. All rights reserved.
//
import UIKit
extension UINavigationController{
//子页面的状态条(电池栏)样式由它自己来决定
open override var childForStatusBarStyle: UIViewController?{
return topViewController
}
}
总结
:
- 整个app无导航时在总代理中定制全局状态条颜色
- 有导航时,和导航控制器无关联的的界面,可在界面视图对应的控制器中单独设置状态条颜色
- 有导航时,和导航控制器有关联的界面在任何地方设置状态栏都不会生效,只有和导航控制器有关的设置才会生效(拓展UINavigationController并设置计算属性childForStatusBarStyle)
网友评论