swift - 仅在 iPhone X 上显示状态栏

标签 swift xcode iphone-x

如果不是 iPhone X,则希望隐藏状态栏;如果是 iPhone X,则希望显示状态栏。

这很可能必须以编程方式完成,因为 plist 中没有支持此功能的键(我发现的最接近的键是 UIStatusBarHidden)

最佳答案

方法一:

您必须将此值添加到 plist:“查看基于 Controller 的状态栏外观”并将其设置为“NO”。 enter image description here

之后将其添加到AppDelegate

   var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)
        if #available(iOS 11.0, *) {
            if (window?.safeAreaInsets.top)! > CGFloat(0.0) || window?.safeAreaInsets != .zero {
                print("iPhone X")
                application.isStatusBarHidden = false
                //or UIApplication.shared.isStatusBarHidden = true
            }
            else {
                print("Not iPhone X")
                application.isStatusBarHidden = true
            }
        }
        return true
    }

方法2:查看基于 Controller 的状态栏外观”并将其设置为“”。 默认情况下。

在 iOS11+ 中, setStatusBarHiddenisStatusBarHidden 已被弃用, prefersStatusBarHidden从 iOS7+ 开始可用,我们可以通过 ViewController 进行状态栏可见性设置 -

struct StatusBarInfo {
    static var isToHiddenStatus = false
  }
    var window: UIWindow?
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        if #available(iOS 11.0, *) {
            if (window?.safeAreaInsets.top)! > CGFloat(0.0) || window?.safeAreaInsets != .zero {
                print("iPhone X")
                StatusBarInfo.isToHiddenStatus = false
            }
            else {
                StatusBarInfo.isToHiddenStatus = true
                print("Not iPhone X")
            }
        }
        return true
    }

在 ViewController.Swift 中

override var prefersStatusBarHidden: Bool {
        return StatusBarInfo.isToHiddenStatus
    }

关于swift - 仅在 iPhone X 上显示状态栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46677240/

相关文章:

ios - 如何搜索多个项目或搜索而不考虑 UISearchBar 的位置

ios - HTTPURLResponse.localizedString(forStatusCode :) not in development language

ios - 如何更改 StackView 中存在的 View 的高度

iphone - 连接到一台 Mac 的多个 iPhone OS 设备 - 如何选择构建

swift - 在 SpriteKit 中缩放/定位静态节点以使它们在所有设备上看起来相似的正确方法是什么? ( swift 4、iOS 11.2)

swift - 从 swift 调用程序集中定义的函数

ios - 在 Xcode 中设置最低 iOS 版本

ios - iPhone X swift 4 中的 setExposureModeCustom 崩溃

ios - 支持横向 iPhone X 的 TableView 标题

ios - 可拖动的 UIView Swift 3