如何为ios 11设置不安全的区域背景颜色

使用xcode 9创建一些新的视图控制器,所以现在我有一些安全区域需要处理。

我目前正在尝试做一些全面的保护,这意味着保持不安全的区域(因为我总是显示状态栏)并且背景颜色延伸到全屏(以保持与我以前相似的行为)。

另外需要注意的是,这也会影响页面控件,因为当你有一些系统会将它们放在底部不安全区域时,它也会以黑色显示。

我找不到让背景颜色延伸到不安全区域后面的方法。 有什么想法吗?

它看起来像一个hacky技巧,但你可以试试这个:
您可以在应用程序启动期间或视图控制器的viewDidLoad期间为状态栏设置背景颜色。 这对我有用,方法如下。

extension UIApplication { var statusBarView: UIView? { return value(forKey: "statusBar") as? UIView } } or // Set it from your view controller if you've view controller based statusbar class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() UIApplication.shared.statusBarView?.backgroundColor = UIColor.green } } // Set upon application launch, if you've application based status bar class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { UIApplication.shared.statusBarView?.backgroundColor = UIColor.green return true } } 

结果如下:

在此处输入图像描述

您必须应用不同的约束。 您的背景颜色应该超出安全区域一直延伸到superview。 因此,您的约束需要设置为背景颜色的superview,但需要设置为ui视图的安全区域(按钮,tableViews等)