无法更改 SplitViewController 中状态栏的颜色
Can't change color of status bar in a SplitViewController
如何在使用 SplitViewController 时更改状态栏的颜色?当仅将 viewcontroller 与导航控制器一起使用时,状态栏的颜色会通过使用 ① 自动更改。有什么方法可以自动更改状态栏吗?
我想为我的应用程序添加深色模式,所以我无法通过 project/target 设置更改状态栏样式。
在我的应用程序中,我有一个通知可以打开和关闭我的深色模式设置。
我试过了
①self.navigationController?.navigationBar.barStyle = .black
②改变info.plist
③Status bar Light content doesnot appear in Navigation Controller using Split view controller
这就是它的样子,我正在使用①来更改导航栏的颜色
您可以使用下面的扩展程序。他们得到 preferredStatusBarStyle
来自嵌入式 ViewController。您只需在自定义 ViewController 中覆盖 preferredStatusBarStyle
extension UISplitViewController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
let master = viewControllers.first
return master?.preferredStatusBarStyle ?? .default
}
}
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
extension UITabBarController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return selectedViewController?.preferredStatusBarStyle ?? .default
}
}
如何在使用 SplitViewController 时更改状态栏的颜色?当仅将 viewcontroller 与导航控制器一起使用时,状态栏的颜色会通过使用 ① 自动更改。有什么方法可以自动更改状态栏吗?
我想为我的应用程序添加深色模式,所以我无法通过 project/target 设置更改状态栏样式。
在我的应用程序中,我有一个通知可以打开和关闭我的深色模式设置。
我试过了
①self.navigationController?.navigationBar.barStyle = .black
②改变info.plist
③Status bar Light content doesnot appear in Navigation Controller using Split view controller
这就是它的样子,我正在使用①来更改导航栏的颜色
您可以使用下面的扩展程序。他们得到 preferredStatusBarStyle
来自嵌入式 ViewController。您只需在自定义 ViewController 中覆盖 preferredStatusBarStyle
extension UISplitViewController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
let master = viewControllers.first
return master?.preferredStatusBarStyle ?? .default
}
}
extension UINavigationController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return topViewController?.preferredStatusBarStyle ?? .default
}
}
extension UITabBarController {
open override var preferredStatusBarStyle: UIStatusBarStyle {
return selectedViewController?.preferredStatusBarStyle ?? .default
}
}