我有多个 UITabBar
在我的应用程序和一些 ViewController
有白色状态栏和一些 ViewController
有黑色状态栏。
我的 info.plist
View controller-based status bar appearance
至 YES
我的 Viewcontroller 有以下代码。
override var preferredStatusBarStyle: UIStatusBarStyle {
return .default //or return . lightContent
}
但是
preferredStatusBarStyle
永远不会被调用。我还在我的 Controller 中写了下面的行
viewDidLoad
但仍然没有被调用。self.setNeedsStatusBarAppearanceUpdate()
我也换了
controller-based status bar appearance
至 YES
&& NO
多次检查但对我没有任何帮助。我也尝试过以下解决方案和其他 stackoverflow 答案,但没有任何帮助。
preferredStatusBarStyle not respecting on iOS 13
preferredStatusBarStyle var not working in iOS12?
编辑
我尝试了下面的代码,它返回
topViewController
它会调用 preferredStatusBarStyle
的ViewController
extension UINavigationController {
override open var childForStatusBarStyle: UIViewController? {
return topViewController
}
}
所以一旦
topViewController
发现它会打电话preferredStatusBarStyle
那个特别的 ViewController
.但问题是它没有在内部被调用
UITabBarController
-> UINavigationController
-> UIViewController
.要求
我有 2 个不同的
TabBarController
.第一
TabBarController
statusBarStyle 是 .lightContent
.第二
TabBarController
statusBarStyle 是 .lightContent
和 .default
在不同的 Controller 中。当我更改为第二个 TabBarController 时,它会调用
preferredStatusBarStyle
第二个 TabBarController
和所有 ViewController
statusBarStyle 去 .default
但我的一些 Controller statusBarStyle 想要成为 .ligthContent
我怎样才能做到这一点?
任何帮助将不胜感激。
谢谢
最佳答案
这与 iOS 13 无关。你只是规则错了。
在导航 Controller 的情况下,状态栏的颜色不是由 View Controller 的 preferredStatusBarStyle 决定的。
令人惊讶的是,它是由导航栏的 barStyle 决定的。要获取状态栏文本,请说(在您的 View Controller 中):
self.navigationController?.navigationBar.barStyle = .black
关于ios - preferredStatusBarStyle 未在 iOS 13 和其他系统中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59577879/