iOS 13状态栏样式

Mic*_*cky 11 ios uistatusbar swift ios13

我想在iOS 13上的每个ViewController级别上更改状态栏样式。到目前为止,我没有任何运气。
我在info.plist中定义UIUserInterfaceStyleLight(因为我不想支持暗模式),并设置UIViewControllerBasedStatusBarAppearancetruepreferredStatusBarStyle在我的ViewController上调用,但被完全忽略。在UIUserInterfaceStyle似乎永远覆盖VC偏好。如何在iOS 13上使用每个ViewController状态栏样式?还是不再支持?

bez*_*dam 17

iOS 13.2,斯威夫特 5.1

对我来说,之前提到的解决方案没有任何效果。5 小时后,我结束了 modalPresentationCapturesStatusBarAppearance flag 。

    destinationNavigationController.modalPresentationCapturesStatusBarAppearance = true
    sourceViewController.present(destinationNavigationController, animated: animated, completion: nil)
Run Code Online (Sandbox Code Playgroud)

在此之后preferredStatusBarStyle,在介绍的VC中调用。

override var preferredStatusBarStyle: UIStatusBarStyle {
    if #available(iOS 13.0, *) {
        if traitCollection.userInterfaceStyle == .light {
            return .darkContent
        } else {
            return .lightContent
        }
    } else {
        return .lightContent
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `modalPresentationCapturesStatusBarAppearance = true` 救了我的命! (2认同)

Vol*_*nko 3

我在 iOS13 上遇到了同样的问题,但在 iOS12 上我的应用程序没问题。我有一个 TabBarController,其中包含 3 个 NavigationBarController,并且我呈现了以前的 ViewController 中的 TabBarController。我通过在演示时将 .modalPresentationStyle 设置为 .fullScreen 来修复此问题:

tabbarController.modalPresentationStyle = .fullScreen
Run Code Online (Sandbox Code Playgroud)

也许它会以某种方式帮助你......