2016-07-14 10 views
2

Ich habe eine App, die in allen Ansichten bis auf Porträt gesperrt ist, mit Ausnahme von einem, das AllButUpsideDown ist. Der Ansatz, den ich verwende, ist die Aktivierung von Hochformat, Querformat links und Querformat rechts im Menü Allgemeine Einstellungen der Ziele. Dann haben Unterklassen von UINavigationController und UITabBarController, die func supportedInterfaceOrientations() -> UIInterfaceOrientationMask überschreiben und gibt .Portrait zurück.Rotationsverhalten iOS8 vs iOS9

Dann in meiner Ansicht Controller, der in der Lage sein soll, gedreht zu werden Ich habe auch func supportedInterfaceOrientations() -> UIInterfaceOrientationMask überschrieben und gibt .AllButUpsideDown zurück. Dies funktioniert gut, da dieser Ansichtscontroller nur als ein Modal dargestellt wird, d. H. .

All dies funktioniert wie erwartet auf iOS9 auf iOS8, aber wenn ich den drehbaren View-Controller im Querformat schließe, wird die Benutzeroberfläche auf Querformat skaliert, so dass sie im Hochformat angezeigt wird.

result in iOS8

Wer weiß, was ist zu tun? Komme ich von vornherein auf diese Rotationssache? Irgendwelche sauberen Korrekturen? Problemumgehungen? Hacks?

UPDATE

Mein Problem von mir entstand eine benutzerdefinierte Übergang mit dem View-Controller zu präsentieren und zu entlassen, die sich drehen können. Ich habe versucht, einige Zeit mit verschiedenen Lösungen zu arbeiten. Der Lösung, der ich am nächsten kam, war die Verwendung eines separaten UIWindow für meinen drehbaren View-Controller, der funktionierte, bis auf ein Problem, bei dem die Trägerleiste immer noch in der falschen Ausrichtung war, was ich nicht lösen konnte.

Die Lösung (nicht wirklich eine Lösung) Ich ging mit war nur die benutzerdefinierte Übergang in iOS9 + verwenden und auf iOS8 verwenden die Standard-Gegenwart Übergang.

+0

Kontrolle dieses http://stackoverflow.com/questions/38308919/unable-to-force-uiviewcontroller-orientation/38308987#38308987 –

Antwort

0

Ich hatte das gleiche Problem, wenn die Navigation zurück von VC, unterstützt Landschaft, die nur das Porträt ist. Ich habe keinen sauberen Workaround gefunden. Diese paar Zeilen werden nicht empfohlen, aber wenn Sie verzweifelt sind, können Sie Ihre Geräteausrichtung erzwingen, wenn Sie kurz davor sind, zu entlassen.

let value = UIInterfaceOrientation.Portrait.rawValue 
UIDevice.currentDevice().setValue(value, forKey: "orientation")