代码之家  ›  专栏  ›  技术社区  ›  jdleung

如何在iPhone X中设置带有背景图像的黑色状态栏?

  •  0
  • jdleung  · 技术社区  · 7 年前

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

    状态栏显示为白色文本颜色。

    enter image description here

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

    override var preferredStatusBarStyle: UIStatusBarStyle{
      return .default      
    }
    

    还有其他建议吗?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   Keerthaprasanth Ravikumar    7 年前

    方法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 已弃用, [PreferssStatusBarHidden][2]可从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 = true
                }
                else {
                    StatusBarInfo.isToHiddenStatus = true
                    print("Not iPhone X")
                }
            }
            return true
        }
    

    在ViewController中。敏捷的

    override var prefersStatusBarHidden: Bool {
            return StatusBarInfo.isToHiddenStatus
        }