Alle Ansichts-Controller in meiner App funktionieren nur im Hochformat, außer einer, die im Hoch- oder Querformat ausgerichtet sein kann.
Ich habe ein Anwendungsszenario wie folgt:
Nach diesen Aktionen bleibt die Anwendung im Querformat und wird nicht automatisch in Hochformat umgewandelt.
Ich kontrolliere die Ausrichtung des View-Controllers mit Hilfe von supportedInterfaceOrientations (ich verwende iOS 6.0). Was ich falsch mache? Wie kann ich richtiges Verhalten erhalten, wenn die Anwendung die Ausrichtung automatisch zulässt, wenn der Benutzer die Taste zurückdrückt? Danke für die Antwort!
Wenn in iOS 6 (und möglicherweise auch früher) ein View-Controller beim Drehen des Geräts nicht angezeigt wird, werden keine Benachrichtigungen angezeigt. Es wird auch nicht willAnimateRotationToInterfaceOrientation:duration:
gesendet, wenn es zum Top-View-Controller wird.
Sie müssen die aktuelle Ausrichtung des View-Controllers verfolgen und die Geräteausrichtung in viewWillAppear:
überprüfen. Wenn sie unterschiedlich sind, können Sie willAnimateRotationToInterfaceOrientation:duration:
verwenden, um sie korrekt zu setzen.
Da Sie wahrscheinlich viel tun werden, möchten Sie vielleicht eine generische Oberklasse erstellen, von der Ihre View-Controller erben.
Eine typische Lösung ist:
%Vor%iOS 9 und höher
Schreiben Sie zu der Zeit des Pops einfach den unten genannten Code in Ihre Methode viewWillAppear .
%Vor%Damit erscheint Ihre Ansicht im Hochformat.
Überschreiben Sie -(BOOL)shouldAutoRotate and - (NSUInteger)supportedInterfaceOrientations
in einer UINavigationController
-Kategorie, dann wird ViewController gezwungen, nach dem Popup-Aufruf von einem anderen ViewController in die unterstützte Ausrichtung zu wechseln.
P.L. hat eine schöne Lösung in diesem Thema: Präsentieren und blenden Sie sofort einen leeren Modal View Controller aus, der nur portrait | erlaubt Landschaft
So ändern Sie die Geräteausrichtung programmgesteuert in iOS 6
Tags und Links objective-c ios screen-orientation uiinterfaceorientation