2016-05-06 21 views
1

Ich habe eine Anwendung, wo ich einen Anwendungsfall für zwei UIWindow Instanzen habe. Die erste Instanz führt alle normalen App-Interaktionen aus, aber ich muss in der Lage sein, einen Ansichtscontroller über allem anderen darzustellen, unabhängig davon, was der Benutzer in der Anwendung tut, ohne Benutzerinteraktion.UIWindow Statusleiste Rotation

Ich habe das zweite Fenster funktioniert und präsentiert sich gut. In diesem View-Controller unterstütze ich nur den Hochformat-Modus (obwohl andere Teile der App die Landschaft unterstützen). Ich habe versucht, diese Methoden in den rootViewController des Fensters auf Blockdrehung unter Verwendung:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return [.Portrait] 
} 

override func shouldAutorotate() -> Bool { 
    return false 
} 

, die erfolgreich das Gerät vom Drehen der View-Controller verhindert, aber es ermöglicht immer noch die Statusleiste zu drehen. Ich möchte verhindern, dass sich die Statusleiste dreht. Ich habe versucht, die folgenden mein AppDelegate

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { 
    if let _ = window as? MyTopWindow { 
    return [.Portrait] 
    } else { 
    return .All 
    } 
} 

jedoch hinzufügen, die entweder nicht funktioniert hat. Die Statusleiste rotiert weiterhin.

Ich habe die Frage unten gesehen und versucht, die Lösung zu implementieren, aber es ist nicht für meinen Fall arbeiten:

self.callManagementWindow = ActiveCallManagementWindow(frame: UIScreen.mainScreen().bounds) 
self.callManagementWindow.rootViewController = primaryViewController 
self.callManagementWindow.hidden = false 
self.callManagementWindow.makeKeyAndVisible() 
: Status bar rotates separated from UIWindow

bearbeiten

Hier ist der Code, wo ich die UIWindow erstellen

+0

Ich sollte hinzufügen, außer Kraft zu setzen - wenn jemand weiß, von Eine Möglichkeit, dies zu implementieren, ohne mehrere UIWindow-Instanzen zu verwenden, bin ich auch. Ich weiß jedoch nicht anders, um sicherstellen zu können, dass ich immer einen View-Controller über alles andere hinaus präsentieren kann. –

+0

Können Sie den Code zum Erstellen und Einrichten der UIWindows posten? – kpsharp

+0

@kpsharp Den Code dafür hinzugefügt –

Antwort

2

Vor einiger Zeit hatte ich Probleme mit zwei Fenstern und Rotation auch und wenn ich mich recht brauchen erinnern Sie supportedInterfaceOrientations() und shouldAutorotate() in rootViewController der ersten UIWindow sowie zweite

+0

Ich hatte gehofft, dies nicht tun zu müssen, aber es sieht so aus, als ob dies erforderlich ist. Ich habe meinen Code so eingestellt, dass, wenn das Haupt-UIWindow im Hintergrund ist, diese UIViewControllers korrekte Werte in 'supportedInterfaceOrientations' und' shouldAutorotate' zurückgeben, die zum Schlüsselfenster passen. –

1

Können Sie versuchen, dies in primaryViewControllers viewDidAppear:

[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationPortrait;