Es gibt die Hauptnummer UIWindow
, die MainViewController
enthält, die lightContent
als preferredStatusBarStyle
verwendet. Ich habe eine zweite UIWindow
Instanz erstellt, um PopupViewController
anzuzeigen, die default
als preferredStatusBarStyle
verwendet.Zustand der Statusleiste nach dem Schließen der zweiten UIWindow wiederherstellen
Wenn ich zeigen zweite UIWindow
mit PopupViewController
Statusleiste Stil Änderungen default
, aber wenn ich es verstecken Stil keine Änderungen an lightContent
zurück.
Das gleiche Problem gilt für Situation, wenn ich VC mit ausgeblendeter Statusleiste im Popup-Fenster habe - Statusleiste zeigt nicht, wenn Popup-Fenster geschlossen ist.
New UIWindow
Schöpfung:
// 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()
New UIWindow
Entlassung:
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()
}
)
Thank you!
EDIT: Popup jederzeit auftreten kann, weiß ich nicht, die VC zu diesem Zeitpunkt aktiv war
Popup kann auf einem zufälligen VC erscheinen. Es fühlt sich irgendwie hacky an, den Stil manuell zurückzusetzen. Ich dachte, es gibt eine Möglichkeit zu sagen "OK, jetzt ist dieses Fenster wieder Master, hier ist es rootVC, erben Statusleiste Einstellungen von ihm". –
hast du "View controller-based status bar appearance" auf NO auf info.plist gesetzt – Ragul
Nein, ich brauche es leider VC-basiert –