ViewControllerA präsentiert ViewControllerB modal.iOS - Geräteausrichtung erzwingen, wenn View Controller modal präsentiert wird
ViewControllerA sollte Hochformatausrichtung sein.
ViewControllerB sollte LandscapeRight-Ausrichtung sein.
ich tun: ViewControllerA:
override func shouldAutorotate() -> Bool {
return false
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.Portrait
}
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.Portrait
}
ViewControllerB
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return UIInterfaceOrientation.LandscapeRight
}
override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
return UIInterfaceOrientationMask.LandscapeRight
}
Es Arbeiten, aber wenn ich ViewControllerB schließen, ViewControllerA wird auch LandscapeRight. Wie es zu beheben? Thx.
SOLUTION:
bearbeiten AppDelegete Datei.
func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
if self.window?.rootViewController?.presentedViewController is ViewControllerB {
let secondController = self.window!.rootViewController!.presentedViewController as! ViewControllerB
if secondController.isPresented {
return UIInterfaceOrientationMask.LandscapeRight;
} else {
return UIInterfaceOrientationMask.Portrait;
}
} else {
return UIInterfaceOrientationMask.Portrait;
}
}
Ihre Lösung richtig ist, aber es wird wirklich kompliziert, wenn Sie mehr Viewcontrollers in verschiedenen Orientierungen haben. Sie können meine Lösung versuchen, es funktioniert in meinem Szenario. – KlimczakM