Il est le principal UIWindow
qui détient MainViewController
qui utilise lightContent
comme preferredStatusBarStyle
. J'ai créé la deuxième instance UIWindow
pour afficher PopupViewController
, qui utilise default
comme preferredStatusBarStyle
.Restauration de l'état de la barre d'état après la fermeture de la deuxième UIWindow
Quand je montre deuxième UIWindow
avec PopupViewController
état des changements de style bar à default
, mais quand je le cache style ne pas revenir à des changements lightContent
.
Le même problème s'applique à la situation où j'ai VC avec barre d'état masquée dans la fenêtre contextuelle - la barre d'état ne s'affiche pas lorsque la fenêtre contextuelle est fermée.
Nouvelle UIWindow
création:
// Prepare window to show dialog box in
newWindow = UIWindow(frame: UIScreen.main.bounds)
newWindow?.windowLevel = 3
// Overlay new window
newWindow?.makeKeyAndVisible()
self.mainWindow.windowLevel = 1
self.mainWindow.endEditing(true)
newWindow?.isHidden = false
// Display dialog
newWindow?.rootViewController = PopupViewController()
licenciement Nouveau UIWindow
:
UIView.animate(
withDuration: 1.0,
delay: 0,
usingSpringWithDamping: 1,
initialSpringVelocity: 0,
options: .curveEaseOut,
animations: { [weak self] in
self?.newWindow?.alpha = 0
},
completion: { [weak self] _ in
self?.newWindow?.windowLevel = 0
self?.newWindow?.rootViewController = nil
self?.newWindow?.alpha = 1
self?.mainWindow.makeKeyAndVisible()
}
)
Merci!
EDIT: Popup peut apparaître à tout moment, je ne sais pas quelle VC était actif à ce moment
Cela me semble un peu hacky de remettre le style manuellement. Je pensais qu'il y avait un moyen de dire "OK, maintenant cette fenêtre est à nouveau maître, ici c'est rootVC, hériter des paramètres de la barre d'état". –
avez-vous réglé "Afficher l'apparence de la barre d'état basée sur le contrôleur" sur NON sur info.plist – Ragul
Non, malheureusement, j'ai besoin de –