При выполнении некоторых сетевых операций я представляю контроллер модального представления (похожий на MBProgressHUD, но как контроллер представления), чтобы предотвратить взаимодействие с пользователем и указать прогресс.
Контроллер представления имеет modalPresentationStyle = .Custom
и анимируется с помощью делегата перехода и настраиваемого контроллера представления. Помимо анимации переходов, у них нет настраиваемых действий, управляющих презентацией.
У меня проблема в том, что всякий раз, когда представлен контроллер представления, он меняет цвет строки состояния на черный. Я мог бы переопределить preferredStatusBarStyle
, чтобы он всегда возвращал .LightContent
, но иногда этот контроллер представления отображается поверх контроллера представления с помощью .Default
, и я тоже не хочу его менять. В принципе, я хочу вести себя так же, как UIAlertController
.
Я попытался настроить контроллер представления, чтобы переместить представленный контроллер представления из области строки состояния:
private class SEUIProgressControllerPresentationController: UIPresentationController {
override func shouldPresentInFullscreen() -> Bool {
return false
}
private override func frameOfPresentedViewInContainerView() -> CGRect {
return super.frameOfPresentedViewInContainerView().insetBy(dx: 40, dy: 100)
}
...
}
Эти настройки действительно перемещают верхнюю часть представленного контроллера из строки состояния, но строка состояния по-прежнему затрагивается. Есть ли свойство, которое мне не хватает, чтобы мой контроллер представления не обновлял стиль строки состояния?