Wenn Sie im Querformat von einem iPhone 6 Plus-Startbildschirm in Hochformat-Ausrichtung starten, führt dies zu einer falschen Ausrichtung
Der eigentliche Titel für diese Frage ist mehr, als ich vielleicht passen:
Starten einer app, deren root-view-controller unterstützt nur portrait-Orientierung aber, die sonst unterstützt Querformat auf dem iPhone 6 Plus, während der home-screen im Querformat Ergebnisse in einem limbo-Zustand, wo das app-Fenster im Querformat, aber das Gerät wird im hochformat.
Kurz gesagt, es sieht wie folgt aus:
Wenn es Aussehen soll wie dieses:
Schritte zum Reproduzieren:
-
iPhone 6 Plus mit iOS 8.0.
-
Einer app, deren plist unterstützt alle-aber-portrait-upside-down-Orientierungen.
-
Dem root-view-controller ist die app ein UITabBarController.
-
Alles, die tab bar controller und alle seine Nachfahren child-view-Controller zurück
UIInterfaceOrientationMaskPortrait
aussupportedInterfaceOrientations
. -
Start in iOS home-Bildschirm.
-
Drehen ins Querformat (erfordert iPhone 6 Plus).
-
Kalt-starten Sie die app.
-
Ergebnis: gebrochen Ausrichtungen.
Ich kann mir nicht vorstellen, dass es eine andere Art und Weise durchzusetzen, hochformat außer zu deaktivieren, die Landschaft insgesamt, die ich nicht tun kann: unsere web-browser-modal-view-Controller benötigen Landschaft.
Ich habe sogar versucht Unterklassen UITabBarController und überschreiben supportedInterfaceOrientations die Rückkehr der Porträt-nur die Maske, sondern diese (auch mit allen anderen oben genannten Schritte) das Problem nicht behoben.
Hier ist ein link zu einem Beispiel-Projekt zeigt den Fehler.
InformationsquelleAutor der Frage jaredsinclair | 2014-09-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche Problem beim Start unserer app im Querformat auf dem iPhone 6 Plus.
Unser fix war das entfernen der Landschaft unterstützt Ausrichtungen aus der plist über den Projekt-Einstellungen:
und implementieren Anwendung:supportedInterfaceOrientationsForwindow: im app-delegate:
Offenbar die Informationen in der plist angeben, welche Orientierungen Ihre app erlaubt wird, zu starten.
InformationsquelleAutor der Antwort Stefan Church
Einstellung der
statusBarOrientation
desUIApplication
scheint zu funktionieren für mich. Ich legte es in dieapplication:didFinishLaunchingWithOptions:
Methode im app delegate.InformationsquelleAutor der Antwort neilvillareal
Dies scheint ein bug in iOS 8, wenn mit einem UITabBarController als Wurzel-view-controller. Ein workaround ist die Verwendung eines zumeist Vanille UIViewController als root-view-controller. Diese Vanille-view-controller dient dabei als parent-view-controller der tab bar controller:
InformationsquelleAutor der Antwort jaredsinclair
Ich hatte ein sehr ähnliches problem. Ich wollte zu force portrait mode überall, außer für die Wiedergabe von videos.
Was ich Tat, war:
1) zu zwingen, die app die Orientierung in hochformat in der AppDelegate:
2) starten Sie eine leere modal-view-controller behoben, das problem in meinem Fall.
Ich starte es in der viewDidLoad der ersten view-controller, der auf die root meiner NavigationViewController (die erste view-controller angezeigt, nachdem die Anwendung startet):
InformationsquelleAutor der Antwort Eurico Doirado
Bitte versuchen Sie den folgenden code.
Wahrscheinlich dieses problem verursacht durch Größe keywindow auf Landschaft starten.
InformationsquelleAutor der Antwort fumiaki
Kein Glück für mich der workaround von Jared mit einem generischen container view controller. Ich habe bereits Unterklasse tab bar controller mit supportedInterfaceOrientations mit kein Glück. Unabhängig von der Ausrichtung des 6+ nach dem Start die tab-Leiste Fenster reporting
frame = (0 0; 736 414)
Bisher die einzige Lösung die ich gefunden habe, ist die Kraft der Fensterrahmen nach makeKeyAndVisible
[self.window makeKeyAndVisible];
self.window.frame = CGRectMake(0, 0, MIN(CGRectGetWidth(self.window.frame), CGRectGetHeight(self.window.frame)), MAX(CGRectGetWidth(self.window.frame), CGRectGetHeight(self.window.frame)));
InformationsquelleAutor der Antwort Anthony
Ich will nur meine app zu öffnen, im landscape-Modus (und nicht das problem aufweisen, das Sie oben beschreiben auf dem iPhone 6 Plus), so dass ich
Landscape (left home button)
undLandscape (right home button)
als nur Orientierungen dürfen in meiner app PLIST-Datei. Dies behebt die Ausrichtung problem, wenn meine app öffnet. Allerdings muss ich meine app unterstützt den portrait-Modus für eine Ansicht nur da ich einUIImagePickerController
in meiner app, die Apple verlangt, gezeigt werden im portrait-Modus auf dem iPhone.War ich in der Lage zu unterstützen, Porträt, dass man nur anzeigen, während die app öffnen im landscape-Modus, indem Sie den folgenden code in
AppDelegate
:InformationsquelleAutor der Antwort Jack Humphries
Für mich, ich hatte das gleiche Problem wie jaredsinclair, aber Unterklassen eine
UIViewController
mit dersupportedInterfaceOrientations
Methode war nicht die Lösung des Problems. Stattdessen habe ich genau das Tat, was er Tat, in meinemappDidFinishLaunching
Methode meinerAppDelegate
Hinzugefügt und meineUITabBarController
wie ein Kind zu einem normalenUIViewController
anstatt seine Unterklasse, und es funktionierte!InformationsquelleAutor der Antwort Will
Ich bin in der gleichen situation, und Sie [selbst.Fenster setFrame:...] funktioniert nicht für mich.
Fügen Sie die folgenden am Ende der Anwendung:didFinishLaunchingWithOptions ist das einzige, was ich gefunden habe, die funktioniert. Es macht den Bildschirm blinkt und ist nicht gerade sauber und effizient.
Fügte diesem am Ende der Anwendung:didFinishLaunchingWithOptions:
InformationsquelleAutor der Antwort James Grote
Ich hatte ein ähnliches Problem mit meiner app läuft sowohl in Landschaft und portrait mit einem UITabBarController als Wurzel-view-controller.
Wann immer die app gestartet wurde, wenn im Landscape-Modus, die Ansicht war falsch.
Alles was ich zu tun hatte:
- entfernen rootview controller-Zuordnung in der XIB.
- Manuell hinzufügen, sobald die app gestartet wird:
(void)applicationDidFinishLaunching:(UIApplication *)application {
- Anwendung.statusBarHidden = JA;
[self.Fenster setRootViewController:selbst.tabBarController];
Dass das problem behoben ist.
InformationsquelleAutor der Antwort de-bits
Entfernen Sie einfach Alle Elemente in der Unterstützten interface-Ausrichtung, außer das, was Sie wollen (ich brauche nur Hochformat) in info.plist , es wird für mich arbeiten
InformationsquelleAutor der Antwort abdul sathar
Ich hab denselben Fehler auf meinem app, ich fand es heraus mit diesem Lösung
Erstens es hat nicht funktioniert, aber nach dem einige Graben ich habe es auf ersten controller nach dem splash-screen.
Antwort ist OjbC Sprache, lassen mich ein update auf Swift -
Vergessen Sie nicht, dass sollte auf die erste view-controller.
InformationsquelleAutor der Antwort Gürhan KODALAK
einfach anrufen
[application setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
im app delegate-Methode
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
in der Tat, das Gerät ist jetzt UIInterfaceOrientationPortrait nach dem Start ,wenn Sie Tippen Sie auf ein Eingabefeld ,die Tastatur ist im hochformat
InformationsquelleAutor der Antwort NYZ_Star