在iPhone X上的警报用UIAlertControllerpopup窗口显示不同的颜色

我有一个应用程序,我最初在Xcode 8中为iOS 10构build。 我最近升级到Xcode 9 ,并已经修复了我的iPhone X和iOS 11的应用程序。我遇到了很多麻烦的一个问题是如何使整个屏幕(包括缺口区域)变暗时提出警报。 见图:

我在“连接”视图控制器上显示警报(您在下面看到)。 我没有做任何操作这个视图控制器的根视图。 我已经在这个根视图的“故事板”中“检查”“安全区域相对边距”和“安全区域布局指南”。 (我也尝试了其他检查/不检查这些框的排列,没有什么差别。)

有趣的是,当我在我自己的iPhone 6上运行这个构build时,状态栏也不会变暗(尽pipe由于状态栏比iPhone之前的版本小很多,所以状态栏并不明显)。 这个问题肯定是在Xcode 9中开始发生的,因为我在App Store上的当前版本(使用Xcode 8构build)会在警报上调整整个屏幕。

有没有人有任何想法如何解决这个问题? 让我知道你是否需要其他信息。

更新info.plist

 <key>UIViewControllerBasedStatusBarAppearance</key> <false/> 

使用添加子视图到UIWindow中 –

 UIApplication.shared.statusBarStyle = .lightContent//for white color let statusBarBgView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: UIApplication.shared.statusBarFrame.height)) statusBarBgView.backgroundColor = UIColor.red//status bar color window?.rootViewController = MYViewController//Entry point window?.rootViewController?.view.addSubview(statusBarBgView)//Adding to window 

结果与警报popup – >

在这里输入图像说明

结果与背景应用程序列表 – >

在这里输入图像说明