【问题标题】:How to set black status bar with a background image in iPhone X?如何在 iPhone X 中设置带有背景图像的黑色状态栏?
【发布时间】:2018-01-09 09:30:47
【问题描述】:

应用以黄色图片为背景,状态栏设置为隐藏状态,在iPhone X以外的其他设备上运行良好。

状态栏保持白色文本颜色。

我尝试添加以下代码,仍然失败:

override var preferredStatusBarStyle: UIStatusBarStyle{
  return .default      
}

还有什么建议吗?

谢谢。

【问题讨论】:

    标签: ios swift statusbar


    【解决方案1】:

    方法一:

    您必须将此值添加到 plist:“查看基于控制器的状态栏外观”并将其设置为“NO”。

    然后在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 = true
                    //or UIApplication.shared.isStatusBarHidden = true
                }
                else {
                    print("Not iPhone X")
                    application.isStatusBarHidden = true
                }
            }
            return true
        }
    

    方法二:查看基于控制器的状态栏外观”并将其设置为“YES”。 这是默认设置。

    在 iOS11+ 中,setStatusBarHiddenisStatusBarHidden 已弃用, [prefersStatusBarHidden][2] iOS7+ 可用,我们可以在ViewController as- 上进行状态栏可见性设置-

    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 = true
                }
                else {
                    StatusBarInfo.isToHiddenStatus = true
                    print("Not iPhone X")
                }
            }
            return true
        }
    

    在 ViewController.Swift 中

    override var prefersStatusBarHidden: Bool {
            return StatusBarInfo.isToHiddenStatus
        }
    

    【讨论】:

    • 谢谢您的建议。我使用方法1,隐藏状态栏。如果我想让它在 iPhone X 上显示,我该如何让它变成黑色?
    • 欢迎! @jdleung 请使用此代码 UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.default, animated: true) 这是黑色状态栏
    • UIApplication.shared.setStatusBarStyle(UIStatusBarStyle.lightcontent, animated: true) 这是白色状态栏
    • 知道了。谢谢。
    猜你喜欢
    • 2014-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2021-10-28
    • 1970-01-01
    • 2020-01-26
    相关资源
    最近更新 更多