Ich entwickle eine iPhone-Anwendung, die mehrere Spitzen hat, und sollte nur im Querformat sein.
Die Anwendung wird im Landscape-Modus über ihre Info.plist-Datei gestartet.
Ich habe zwei View-Controller:
FirstViewController
und SecondViewController
.
Für jede dieser Dateien habe ich eine Nib-Datei, in der die Ansicht im Querformat ist. Beide View-Controller werden zu meiner MainView
nib als Outlets hinzugefügt und ihre Ansichten werden langsam initialisiert.
Wenn die Anwendung geladen wird, wird wie erwartet die erste Ansicht im Querformat angezeigt. Wenn ich jedoch in die zweite Ansicht umschalte, bleibt das Gerät (oder der Simulator) im Querformat, aber die Ansicht wird gedreht, als ob das Gerät im Hochformat wäre, bremse meine Schnittstelle.
In beiden UIViewController
-Klassen habe ich folgenden Code:
und um Ansichten zu wechseln, in meinem App-Delegat mache ich:
%Vor% Dabei sind viewController
und secondViewController
die beiden Ausgänge, an denen die View-Controller angeschlossen sind.
So sieht die zweite Ansicht in IB aus: Alternativtext http://img27.imageshack.us/img27/4898/picture1ni.png
und so sieht es im Simulator aus: alt text
>Warum wird die zweite Ansicht in der Landschaft angezeigt, aber mit der Benutzeroberfläche gedreht?
Ich möchte mich nicht mit Transformationseigenschaften beschäftigen, da dies übertrieben erscheint.
Ich habe diese Frage mit der Hoffnung verfolgt, dass jemand Ihnen eine aufschlussreiche Antwort geben würde und ich etwas lernen würde. Leider habe ich Angst, dass Sie Transformationen verwenden müssen, damit dies richtig funktioniert. Hier ist der Code, den ich in letzter Zeit benutzt habe, um das Problem zu lösen:
%Vor%Wenn Sie Ihre neue Ansicht hinzufügen, überprüfen Sie die aktuelle Ausrichtung und erzwingen Sie gegebenenfalls die Drehung:
%Vor% Dann sollten Sie natürlich in jedem Ihrer View-Controller entsprechend auf shouldAutorotateToInterfaceOrientation
reagieren:
Ich würde gerne über alternative Lösungen hören, wenn das nicht alles notwendig ist. Es gibt auch eine Einschränkung, die ich bei dieser Konfiguration bemerkt habe: Wenn Sie einen Übergang zwischen den Ansichten haben und das Telefon während dieses Übergangs drehen, ist es möglich, dass die Ansichtenorientierungen in der falschen Querformatausrichtung umgedreht werden dass Sie das Telefon umdrehen müssen (Querformat rechts oder Querformat links), während Sie zwischen Ansichten navigieren.
Es ist nur ein Vorschlag, aber Sie können versuchen, NO in der Methode shouldAotorotate für die zweite Ansicht zurückzugeben. Oder versuche es in der Portraitansicht im IB. Es scheint, dass Ihre Ansicht korrekt geladen wurde (im Landscape-Modus), aber dann wurde die Nachricht autAutotate empfangen und um 90 Grad gedreht.