美文网首页IOS
swift-状态条(电池栏)颜色设置

swift-状态条(电池栏)颜色设置

作者: 瑟闻风倾 | 来源:发表于2019-02-26 16:56 被阅读0次

1. 根据导航颜色自动可调整状态条颜色

说明:状态条只有黑白2种颜色(默认黑色)。只要设置导航条颜色(默认白色),状态条会自动调整,导航条设置为白(黑)色时状态条自动调整为黑(白)色。

导航条颜色设置.png
导航条设置为白色时状态条自动调整为黑色.png
导航条设置为黑色时状态条自动调整为白色.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)

相关文章

网友评论

    本文标题:swift-状态条(电池栏)颜色设置

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