如何在iPhone X中使用背景图像设置黑色状态栏?

时间:2018-01-09 09:30:48

标签: ios swift statusbar

应用程序有一个黄色图像作为背景,状态栏设置为隐藏,它在除iPhone X之外的其他设备上运行良好。

状态栏粘贴在白色文字颜色上。

enter image description here

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

override var preferredStatusBarStyle: UIStatusBarStyle{
  return .default      
}

还有其他建议吗?

感谢。

1 个答案:

答案 0 :(得分:0)

方法1:

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

之后在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
    }

方法2: " 查看基于控制器的状态栏外观"并将其设置为" "。 默认情况下。

与iOS11 + setStatusBarHidden&不推荐使用isStatusBarHidden, [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
    }