Uiviewcontroller Rotation Frage
-
12-10-2019 - |
Frage
Ich habe Hauptmenü in meiner app nur Landscape-Modus unterstützt.
I Landschaft Einschränkung implementieren, indem UIRootViewController::shouldAutorotateToInterfaceOrientation:...
Einrichtung
Und ich habe eine andere Szene mit Porträt-Modus unterstützen.
Also das Problem erscheint, wenn ich von einer anderen Szene zum Hauptmenü im Portrait-Modus übergeben: die App automatisch drehen, um Landschaft nicht, und ich kann eine Code-Methode nicht finden, um es manuell drehen
Gibt es eine Lösung? Wäre dankbar.
Edit: Entschuldigen Sie, ich habe vergessen, Details hinzuzufügen. RootViewController ist für das Menü und eine andere Szene üblich. Und was ist mehr - diese Szenen sind in einer gemeinsamen Ansicht (meine App nutzt OpenGL)
Also, bevor ich Menü aus Porträt Szene I Satz UIRootViewController::shouldAutorotateToInterfaceOrientation:
geben Sie nur für Landschaft zurückzukehren YES.
Lösung
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 für einige View-Controller einige ausgefallene Rotationen tun müssen, aber nicht für andere, dann bekommen die Dinge ein wenig komplizierter.
Andere Tipps
Es gibt keine einfache Möglichkeit, dies zu tun, außer [UIDevice setOrientation:]., Die nicht offen für Entwickler ist, und führte zur Anwendung Ablehnung von Apple
Sie können eine Rotation auf Ihre Ebene anwenden, die genau die gleiche Wirkung erzeugen wird.
myview.layer.transform = CATransform3DMakeRotation(M_PI/2, 0.0f, 0.0f, 1.0f);