关于顶部状态栏色彩更改

386 阅读1分钟

参考的信息 stackoverflow 上的讨论 [Changing the Status Bar Color for specific ViewControllers using Swift in iOS8](stackoverflow.com/questions/2… ](stackoverflow.com/questions/2…)

通过查阅和测试发现 我所遇到情况为 navitaioncontroller push 一个新的 viewcontroller 原来的 statusBarStyle.blackContent 新的 viewcontroller 要更改为 .lightContent

需要 更改 navigationControllerstatusBarStyle才能准确可行的更高顶部状态栏颜色

通过 动态获取 最后 pushviewcontroller 的设置可以比较方便的处理

具体是 在 navigationController 重写 preferredStatusBarStyle属性

    override var preferredStatusBarStyle: UIStatusBarStyle {
        if let topVC = viewControllers.last {
            // return the status property of each VC, look at step 2
            return topVC.preferredStatusBarStyle
        }
        return .default
    }

然后只需要在 最后 push 的那个 viewcontroller 中重写 preferredStatusBarStyle属性

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

这样 可以控制每一个 pushviewcontroller 的顶部状态栏样式了