Как установить системный цвет фона ниже представленных контроллеров представления в ios 13

См. Картинку ниже, я представил в своем приложении viewcontroller, здесь на экране 3 слоя:

  1. Черный, предоставляется системой
  2. Мое приложение, контроллер представления представления, белый
  3. Мое приложение, представленный контроллер представления, белый

Мой вопрос: не должен ли первый слой быть размытым снимком экрана ранее запущенного приложения, почему он черный? я могу установить цвет?

скриншот


Изменить: оказывается, первый слой не предоставляется системой, а просто фон ключевого окна приложения! см. мой ответ ниже


person Hammerhead    schedule 15.08.2019    source источник
comment
Почему бы вам не изменить цвет фона вашего контроллера представления представления (или его панели навигации) перед представлением нового контроллера представления? Когда вы закрываете новый контроллер представления, вы должны снова вернуться к исходному фону. Однако весь подход, похоже, работает против дизайнерских намерений представлений Apple о новом контроллере представления. Если вас не устраивает отображение контроллера фонового представления, просто представьте новый виртуальный компьютер в полноэкранном режиме.   -  person Chris Graf    schedule 15.08.2019
comment
Извините, я не разъяснил, я обновил вопрос, я говорю о системном фоне, а не о слое представления. в любом случае спасибо за ответ   -  person Hammerhead    schedule 15.08.2019
comment
Ознакомьтесь с этим руководством, оно может решить вашу проблему. .   -  person Chris Graf    schedule 15.08.2019
comment
Спасибо за ввод, на самом деле это не связано со строкой состояния и происходит только в ios 13, см. Мой ответ ниже   -  person Hammerhead    schedule 15.08.2019


Ответы (2)


Мне удалось решить эту проблему, установив цвет фона ключевого окна, например:

// inside appDelegate's didFinishLaunchingWithOptions
// The first layer will be white now
window?.backgroundColor = UIColor.white
person Hammerhead    schedule 15.08.2019
comment
Не работает для AppDelegate, если окно и другие компоненты создаются программно. - person J A S K I E R; 20.12.2019

В viewWillAppear контроллера корневого представления вам необходимо сбросить цвет фона, поместив следующий код:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.view.backgroundColor = .white
}

Поместите это туда, где вы нажимаете новый контроллер представления:

self.navigationController?.pushViewController(anotherVC, completion: {
            self.view.backgroundColor = .black
        })
person Tung Vu Duc    schedule 15.08.2019
comment
Извините, я не разъяснил, я обновил вопрос, я говорю о системном фоне, а не о слое представления, в любом случае спасибо за ответ! - person Hammerhead; 15.08.2019