iOS: Geräteausrichtung beim Laden
Scheint es, dass, wenn meine app lädt, weiß er nicht, seine aktuelle Ausrichtung:
UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
if (orientation == UIDeviceOrientationPortrait) {
NSLog(@"portrait");//only works after a rotation, not on loading app
}
Sobald ich das Gerät drehen, bekomme ich eine richtige Orientierung, aber wenn ich laden Sie die app, ohne änderung der Ausrichtung, es scheint, dass mit [[UIDevice currentDevice] orientation]
kennt Sie nicht, die aktuelle Ausrichtung.
Gibt es einen anderen Weg, um dies zu überprüfen, wenn ich zunächst laden Sie meine app?
InformationsquelleAutor der Frage Nic Hubbard | 2011-05-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
EDIT: ich mis Lesen deiner Frage. Dies ermöglicht es Ihnen, starten Sie Ihre Anwendung in bestimmten Ausrichtungen. Nur merkte Sie versuchen, herauszufinden, die Ausrichtung auf den Start.
Es ist eine Methode, um zu überprüfen, die status bar Ausrichtung auf
UIApplication
:Ursprüngliche Antwort
Versuchen Sie, die Anwendung akzeptiert, Geräte-Ausrichtungen in der plist-Datei:
Zeigt dies an, dass Ihre Anwendung unterstützt hoch - (home-Taste am unteren Rand), Querformat Links und Querformat rechts.
Dann in Ihrer UIViewControllers, müssen Sie das überschreiben der
shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
Methode zurückgegeben, JA, wenn die app gedreht werden sollen:Dieser wird Ihnen sagen, die UIViewController, um automatisch drehen, wenn das Gerät in einem von Ihr unterstützten Ausrichtungen. Wenn Sie wollte, zur Unterstützung der upside-down-Orientierung (portrait, home-Taste auf der Oberseite), dann fügen Sie, dass Ihre plist und nur zurück, JA aus dieser Methode.
Lassen Sie uns wissen, wie es funktioniert.
InformationsquelleAutor der Antwort groomsy
Ich denke, das wird Arbeit:
Entsprechend der UIDevice Referenz:
Zitat:
"Der Wert dieser Eigenschaft gibt immer 0 zurück, es sei denn, Orientierung Benachrichtigungen aktiviert durch den Aufruf beginGeneratingDeviceOrientationnotifications"
Ich hatte zunächst angenommen, dass diese Eigenschaft enthalten, die die aktuelle Ausrichtung zu allen Zeiten, aber nicht so, anscheinend. Ich denke mal, dass das einschalten von Benachrichtigungen erfolgt für uns hinter den kulissen in anderen Situationen, in denen die orientation-Eigenschaft ist in der Regel zugänglich, so war es nicht offensichtlich, dass dies getan werden muss manuell in der app delegate
InformationsquelleAutor der Antwort Iducool
Eine Sache, dass niemand berührt hat, aber ist, dass Sie die Speicherung
UIDeviceOrientation
Typen in einerUIInterfaceOrientation
variable. Sie sind unterschiedlich und sollten nicht gleichwertig behandelt zu werden. Beachten Sie, dassUIDeviceOrientationLeft
gleichUIInterfaceOrientationRight
(da die Oberfläche dreht sich der entgegengesetzte Weg im Vergleich zu dem Gerät).InformationsquelleAutor der Antwort Jeff Kelley
Können Sie es tun, indem die folgende Meldung innerhalb
dann setzen Sie die folgende Methode in Ihrer Klasse
Dem obigen Verfahren wird, überprüfen Sie die Ausrichtung der Statusleiste des ipad oder iPhone und nach es Sie machen, machen Sie Ihre animation in die gewünschte Orientierung.
InformationsquelleAutor der Antwort Aragon
Auf das Gerät laden Ausrichtung können
.Unknown
oder.FaceUp
. Um herauszufinden, ob es hochformat oder Querformat verwende ich diestatusBarOrientation
als back-up, wie diese:Diese Weise kann ich Ihnen versichern, dass
portraitOrientation
sagt mir immer, wenn das Gerät im portrait-Modus, und wenn nicht wird es in der Landschaft. Auch über das laden der app zum ersten mal.InformationsquelleAutor der Antwort Marijn
das problem ist, dass
[UIDevice currentDevice]orientation]
manchmal Berichte die das Gerät für die Orientierung falsch.stattdessen
[[UIApplication sharedApplication]statusBarOrientation]
was ist einUIInterfaceOrientation
so, um es zu überprüfen, benötigen Sie dieUIInterfaceOrientationIsLandscape(orientation)
hoffe, das hilft.
InformationsquelleAutor der Antwort iksnae
Um die Orientierung in der Statusleiste ist es auch wichtig, die alle Orientierungen aktiviert in die plist-Datei.
InformationsquelleAutor der Antwort NicoRaf
Swift 3 basierend auf @Marjin 's code.
InformationsquelleAutor der Antwort Nacho Badia
Versuchen Sie den Beschleunigungsmesser, um seine Lektüre, UIAccelerometer, bekommen sharedAccelerometer, seine Stellvertretung, Holen Sie sich die Lesungen, herauszufinden, von dort Orientierung.
InformationsquelleAutor der Antwort DavidN
Alles versucht und keine guten Ergebnisse. Also, was ich Tat, als ich auf einem ipad, verlassen alle die Arbeit der splitViewController Methoden zum erlöschen der barButton:
Für portrait:
Zur Landschaft:
funktioniert das immer auf laden.
InformationsquelleAutor der Antwort user1008139
Ich immer noch mit diesem arbeiten-code-snippet für das iphone 4:
}
InformationsquelleAutor der Antwort Rudolf Stepan
Dies ist die wirkliche Antwort. Wenn eine app startet, wird die Orientierung unbekannt ist. Es nutzt shouldAutorotateToInterfaceOrientation und supportedInterfaceOrientations um zu entscheiden, welche Orientierung zu Holen.
Uhr, als ich starten Sie eine Beispiel-app in der iPhone 5.0 simulator und drehen Sie es mit den folgenden code und 'Unterstützten Ausrichtungen" mit allen 4 möglichen Ausrichtungen:
Ich habe schon viele code-Schnipsel, aber keine von Ihnen Arbeit, die generisch genug ist (iPad & iPhone, iOS 5.0+).
Statt Fummelei mit try-this-versuchen -, dass, platzieren Sie die folgenden in Ihrem root-vc:
Gibt es noch ein lästiges problem von segue Animationen nicht mit der aktuellen Ausrichtung. Meine Vermutung ist, dass Unterklassen die einzelnen VC-und putting-Orientierung auf push /notify delegate pop wäre der Weg zu gehen.
Ebenfalls wichtig:
shouldAutorotateToInterfaceOrientation funktioniert nicht
tabBarController und navigationControllers im landscape-Modus, episode II
InformationsquelleAutor der Antwort Barry
Versuchen, diese ein. es ist für mich arbeiten. gnarly damals von didfinishedlaunch Methode nicht erkennt, Gerät Orientierung. seine nehmen, die standardmäßig als ein Porträt. so. ich bin verwenden, um zu überprüfen, stats bar Orientierung . ich habe diesen code testen. legen Sie es in didfinishedlaunch Methode in appdeleget.
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
InformationsquelleAutor der Antwort jenish
Versuchen, Diese
[[UIApplication sharedApplication] statusBarOrientation];
oder implementieren diese in-app-delegate
funktioniert es
InformationsquelleAutor der Antwort Garry
für diejenigen, die suchen Antwort für Swift 3 oder 4. nur hinzufügen, dass code, der in der viewDidLoad () - block.
InformationsquelleAutor der Antwort Bilal Şimşek
Alle oben gepostet sehr gültige Antworten : aber als UPDATE: Apple : sollten Sie e mit UIStatusBar Orientierungen zum Lesen der aktuellen Ausrichtung des Geräts:
Einer Weise, die Sie könnte prüfen die aktuelle Ausrichtung des Gerätes ist die Verwendung eines int-Werte als solche, innerhalb der
viewDidLoad
Methode :wo Folgendes beachten . . .
- 1 = hochformat (richtige Seite oben)
- 2 = portrait upside down
- 3 = Querformat (rechts)
- 4 = Querformat (Links)
und dann könnten Sie eine
IF
Anweisung zum Aufruf einer Methode, die nach Orientierung erkannt wird, und so weiter und so Fort:Hoffe das war etwas hilfreich, um jemand
InformationsquelleAutor der Antwort Taskinul Haque