首页 > 解决方案 > iOS 14 横向显示状态栏

问题描述

由于iOS 8,状态栏默认隐藏在横向,我想让它可见。我创建了一个新的空项目并尝试了其他主题的几件事,但这些都不起作用:

  1. 我尝试的第一个解决方案(我还将UIViewControllerBasedStatusBarAppearance密钥添加到 Info.Plist 并使用它设置为 true 或 false 进行测试):
import UIKit
    
class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        setNeedsStatusBarAppearanceUpdate()
    }
        
    override var prefersStatusBarHidden: Bool {
        return false
    }
}
  1. 我尝试的第二个解决方案是在 App Delegate 中使用已弃用的方法setStatusBarHidden
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    application.setStatusBarHidden(false, with: .none)
    // Override point for customization after application launch.
    return true
}

在这两种情况下,状态栏都不会以横向显示。有什么办法可以看到吗?

标签: swiftuikit

解决方案


您的代码是正确的(这是您在新的 vanilla iOS 应用程序项目中所需要的全部内容):

override var prefersStatusBarHidden: Bool {
    return false
}

问题是这只适用于 iOS 12。在 iOS 13 及更高版本中,运行时停止解释值,false以允许您覆盖 iPhone 上横向状态栏的隐藏。同样,调用application.setStatusBarHidden无法以横向显示状态。

这可能是 iOS 13 中引入的 UIWindowScene 架构的副作用。或者它可能旨在使所有 iPhone 型号的行为方式相同(带或不带边框)。


推荐阅读