Wie programmiere ich die Geräteausrichtung in iOS 6 programmatisch?
In iOS 5 wir könnten das ändern der Geräteausrichtung programmatisch so:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Aber in iOS 6 setOrientation
ist veraltet, wie kann ich das ändern der Geräteausrichtung programmgesteuert in iOS 6?
InformationsquelleAutor der Frage uttam | 2012-09-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind meine "fünf Cent", getestet unter iOS7 mit ARC
Damit nicht erzeugen "Leck" Warnung performSelector wird.
Uialertview-Objekt - mit diesem code, der beim öffnen uialertview-Objekt beim anzeigen(werden/Haben)erscheinen, Sie werden feststellen, dass alle, aber diese Ansicht ist im hochformat (apple, wirklich?) Ich war nicht in der Lage zu zwingen, den Blick neu ausrichten, aber festgestellt, dass wenn man leichte Verzögerung vor öffnen der uialertview-Objekt zeigen Sie dann Zeit hat, ändern Sie die Ausrichtung.
Hinweis bin ich loslassen meine app der Woche beginnend 12/09/2014 und ich werde den Beitrag aktualisieren, wenn es übergeben wird, oder nicht.
InformationsquelleAutor der Antwort Lukasz 'Severiaan' Grela
Fand ich heraus, dass der einfachste Weg zu zwingen, das Gerät zu ändern-Ausrichtung wird eine neue view-controller (mit
presentViewController:animated:completion:
), wo der neue view-controller eine bestimmte bevorzugte Orientierung (durch die Implementierung der Methode-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
).Wenn eine neue view-controller vorgestellt wird, wie erwartet, die Ausrichtung ändern, die bevorzugt von den neuen view controller. Also, die einfachste Umsetzung (best practice?) wird zum einbetten alle Funktionen, die Sie benötigt in einer bestimmten Orientierung in eine separate view-controller, und Sie als notwendig. Das system wird sich darum kümmern das ändern der Ausrichtung für Sie.
Offensichtlich ist dies möglicherweise nicht für alle Anwendungsfälle, aber, zum Glück, den gleichen trick anwendbar ist, zu zwingen, das Gerät zu verändern-Orientierung für bestehende view-controller.
Der trick ist es, eine neue view-controller mit dem spezifischen bevorzugten Ausrichtung, die Sie benötigt, und dann verstecken Sie es sofort. Dadurch wird die Ausrichtung zu ändern temporäre, wenn der neue view-controller vorgestellt. Der beste Teil ist, wenn der neue view-controller geschlossen wird, wird das original (Vorlage) view-controller ist
preferredInterfaceOrientationForPresentation
erneut abgefragt werden, können Sie die endgültige Ausrichtung wollen Sie hier.Eine wichtige Sache zu achten, ist hier auch temporäre deaktivieren der automatischen Drehung in der ursprünglichen view-controller (bei der Rückkehr von der neu präsentiert-dann-entlassen-view-controller), so dass, wenn der Benutzer drehen Sie Ihr Handy in Richtung der neuen Ausrichtung, es hat nicht ausgelöst, weitere auto-rotation.
Sollte der folgende code veranschaulichen mein Punkt, mein Beispiel wird die Drehung auf hochformat, nur entsprechend ändern, wenn Sie möchten, dass andere Ausrichtung.
Vorausgesetzt, Sie haben die original-view-controller namens
Original
und eine temporäre view-controller namensForcePortrait
InformationsquelleAutor der Antwort P.L.
Dieser nicht antwortet, so ändern Sie die Geräteausrichtung, aber eine weitere Informationen, die Ihnen helfen könnten.
iOS 6 UI-Interface-Orientierung - shouldAutorotateToInterfaceOrientation: Funktioniert Nicht
Die Methode shouldAutorotateToInterfaceOrientation: wird NICHT unterstützt, für iOS 6. Seine veraltet. Nur im Fall, wenn Sie ein Neuling sind, der starrte nur arbeiten im Kakao, und sich Fragen, warum Ihre view-controller Durcheinander in iOS 6 und perfekt in iOS 5, weiß nur, dass shouldAutorotateToInterfaceOrientation: wird nicht mehr unterstützt. Obwohl es funktioniert möglicherweise auch mit Xcode 4 zu 4.3 es wird NICHT funktionieren auf Xcode 4.5.
Apple bietet eine neue Methode, um diese Dinge zu geschehen, in einem viel sauberer Mode. Verwenden Sie supportedInterfaceOrientations statt. Es gibt alle Ausrichtungen, die der view-controller unterstützt, eine Maske der Schnittstelle Orientierungswerte.
UIInterfaceOrientationMask Enum:
Diese Konstanten sind mask bits für die Angabe eines view-controller unterstützten Ausrichtungen.
Mit shouldAutorotateToInterfaceOrientation: Methode:
Mit supportedInterfaceOrientations Methode:
Diese sind die zusätzlichen Methoden zu UIViewController in Bezug auf die Orientierung in iOS6
UIViewController preferredInterfaceOrientationForpresentation
UIViewController shouldAutorotate
UIViewController supportedInterfaceOrientations
Hinzugefügt Methoden, die UIApplication in Bezug auf die Orientierung in iOS6
UIApplication supportedInterfaceOrientationsForwindow:
UIInterfaceOrientationMask
InformationsquelleAutor der Antwort Bala
Versuchen Sie dies:
InformationsquelleAutor der Antwort Bissy
Sollten Sie
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
in Ihrem AppDelegate
didFinishLaunchingWithOptions
Methode.Dann überall in Ihrer Anwendung können Sie die aktuelle Ausrichtung mit:
- Und test-Orientierung mit:
so, wie
InformationsquelleAutor der Antwort
Dieser code ist für iOS 8 oder höher
InformationsquelleAutor der Antwort Raul Quispe
Versuchen, diese...Es funktionierte für mich...
InformationsquelleAutor der Antwort Hiren Patel
@Umsetzung UINavigationController (Anz. autom.)
InformationsquelleAutor der Antwort Shauket Sheikh
Einer kleinen Modifikation zu Bissy Antwort, wenn Sie vermeiden wollen, mit der Runtime-Bibliothek:
InformationsquelleAutor der Antwort Perisheroy
Dies funktioniert mit iOS7, Kraft Anz. autom. portrait.
HINWEIS: implementiert habe ich diese option in meiner app, aber würde wahrscheinlich abgelehnt von Apple (Kommentar für Austin bearbeitete 6 von Sergey K. im Oktober 2012).
InformationsquelleAutor der Antwort ppVen
Apple-ändern der Geräte-Orientierung programmgesteuert in IOS 6 ziemlich schwierig (absichtlich wohlgemerkt).
Soweit ich weiß der einzige Weg, das zu erreichen, was Sie Fragen, ist die Simulation die änderung der device orientation.
Mit
setTransform
zum drehen derUIView
- und re-Anwendung seiner eigenen frame gibt die gewünschten Ergebnisse.Und wenn das Gerät die physische Ausrichtung änderungen, die wir rückgängig machen können, die transformation.
InformationsquelleAutor der Antwort Aleksander Azizi
InformationsquelleAutor der Antwort n00bProgrammer
InformationsquelleAutor der Antwort ganesh
Dies funktioniert für mich auf Xcode 6 & 5.
InformationsquelleAutor der Antwort SamSmart