iOS: Ändern der Schnittstellenausrichtung beim Pop-View-Controller

9

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:

  1. Ich drücke Controller, der in beiden Orientierungen zu UITabBarController
  2. funktioniert
  3. Benutzer ändert die Ausrichtung von portait in landscape
  4. Benutzer drücken "Zurück-Taste"

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!

    
Daniil Popov 28.12.2012, 13:46
quelle

4 Antworten

2

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%     
Maurice Sharp 05.04.2013 03:04
quelle
2

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.

    
Mohit Kumar 31.07.2017 12:51
quelle
1

Ü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.

%Vor%     
Story 26.06.2015 09:32
quelle
0

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

    
Nico 06.03.2014 02:10
quelle