Как установить цвет фона небезопасной области для ios 11

Создание новых контроллеров представлений с помощью xcode 9, так что теперь у меня есть несколько безопасных областей для работы.

В настоящее время я пытаюсь сделать что-то полностью защищенное, что означает сохранение небезопасной области (так как я всегда показываю строку состояния) и цвет фона, распространяющийся на весь экран (чтобы сохранить аналогичное поведение с тем, что я использовал).

Кроме того, это также влияет на элементы управления страницами, поскольку, когда у вас есть какая-то система, они будут помещаться в нижнюю небезопасную область, которая также будет отображаться черным цветом.

Я не могу найти способ, чтобы цвет фона расширялся за небезопасной областью. Любые мысли?

Ответ 1

Это похоже на хакерский трюк, но вы можете попробовать следующее:
Вы можете установить цвет фона для строки состояния во время запуска приложения или в viewDidLoad вашего контроллера вида. Здесь он работает для меня следующими способами.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// 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
    }

}

or

// 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
    }
}



Вот результат:

enter image description here

Ответ 2

Вы должны применять различные ограничения. Цвет фона должен выходить за пределы безопасной зоны до супервизора. Таким образом, ваши ограничения должны быть настроены на супервизор для вашего фонового цвета, но в безопасную область для вашего просмотра ui (кнопки, tableViews и т.п.).