Durante l'esecuzione di alcune operazioni di rete, presento un controller di visualizzazione modale (simile a MBProgressHUD ma come controller di visualizzazione) per impedire l'interazione dell'utente e indicare lo stato di avanzamento.Presentazione di un controller di visualizzazione senza modificare il colore della barra di stato, come UIAlertController
Il controller di visualizzazione ha modalPresentationStyle = .Custom
ed è animato utilizzando un delegato di transizione e un controller di presentazione personalizzato. Oltre ad animare le transizioni, non hanno azioni personalizzate che guidano la presentazione.
Il problema che ho è che ogni volta che viene presentato il controller della vista, il colore della barra di stato diventa nero. Potrei ignorare preferredStatusBarStyle
per farlo restituire sempre .LightContent
ma a volte questo controller di visualizzazione è presentato su un controller di visualizzazione con .Default
e non voglio cambiarlo neanche lì. Fondamentalmente, voglio avere lo stesso comportamento di UIAlertController
.
ho cercato di configurare il controller di presentazione per spostare il controller di vista presentato fuori dello spazio barra di stato:
private class SEUIProgressControllerPresentationController: UIPresentationController {
override func shouldPresentInFullscreen() -> Bool {
return false
}
private override func frameOfPresentedViewInContainerView() -> CGRect {
return super.frameOfPresentedViewInContainerView().insetBy(dx: 40, dy: 100)
}
...
}
Queste impostazioni fanno muovere la parte superiore del controller presentato fuori dalla barra di stato ma la barra di stato è ancora interessata. C'è una proprietà che mi manca che potrebbe impedire al controller della mia vista di aggiornare lo stile della barra di stato?