2010-12-23 6 views
1

Ich habe Hauptmenü in meiner App unterstützt nur Landscape-Modus. Ich implementieren Landschaftseinschränkung durch Einrichten UIRootViewController::shouldAutorotateToInterfaceOrientation:... Und ich habe eine andere Szene mit Portrait-Modus-Unterstützung. Das Problem tritt also auf, wenn ich im Hochformat von einer anderen Szene zum Hauptmenü übergehe: Die App rotiert nicht automatisch im Querformat, und ich kann keine Code-Methode finden, um sie manuell zu drehen.UiViewController rotation Frage

Gibt es eine Lösung? Wäre dankbar.

Edit: Entschuldigung, ich habe vergessen, Details hinzuzufügen. RootViewController ist üblich für Menü und eine andere Szene. Und noch mehr - diese Szenen sind in einer gemeinsamen Ansicht (meine App verwendet OpenGL) Bevor ich also das Menü aus der Portrait-Szene betrete, setze ich UIRootViewController::shouldAutorotateToInterfaceOrientation:, um YES nur für Querformat zurückzugeben.

Antwort

0

Wenn Ihre andere Szene mit Portrait Unterstützung von einem anderen UIViewController gesteuert wird, dann können Sie den View-Controller des -shouldAutorotateToInterfaceOrientation verwenden: sein Verhalten zu definieren. In vielen Fällen sollte dies allein ausreichen. Natürlich, wenn Sie ein paar ausgefallene Drehungen für einen View-Controller machen müssen, aber nicht für andere, dann wird es etwas kniffliger.

+0

Ich stoppte auf diese Lösung: killen Sie meine vorhandenen RootViewController und erstellen Sie neue mit anderen Rotationsbeschränkungen. Scheint, dass der Ansichts-Controller nicht dazu ausgelegt ist, Autorotationseinstellungen in der Laufzeit zu ändern. – brigadir

+0

Können Sie den Nur-Landschaft-Root-View-Controller behalten und einen anderen View-Controller auf den Navigations-Controller-Stack schieben, um die andere Szene anzuzeigen (die beide/alle Orientierungen unterstützt)? – westsider

+0

Beide Szenen (Hauptmenü und eine andere Szene) befinden sich in einer gemeinsamen Ansicht (OpenGL). Ich habe es nicht versucht, aber ich denke, dass es eine schlechte Idee ist, eine Ansicht mit zwei Controllern zu steuern. Wenn Sie Erfahrung in diesem Fall haben, teilen Sie es bitte mit. Es wäre interessant. – brigadir

0

Es gibt keine einfache Möglichkeit, dies zu tun, außer [UIDevice setOrientation:], die nicht für Entwickler geöffnet ist und zur Ablehnung von Anwendungen durch Apple führt.

0

Sie können eine Drehung auf Ihre Ebene anwenden, die genau denselben Effekt erzeugt.

myview.layer.transform = CATransform3DMakeRotation(M_PI/2, 0.0f, 0.0f, 1.0f);