Ich möchte nur die Porträtansicht unterstützen. Wie kann ich eine React Native-App so einstellen, dass sie nicht automatisch gedreht wird? Ich habe versucht, nach Dokumentationen und Github-Problemen zu suchen, fand aber nichts hilfreiches.
ios
react-native
syg
quelle
quelle
sensorPortrait
arbeiten. Es würde niemals ein verkehrtes Porträt (dhreversePortrait
) unterstützen. Die Verwendung hatfullSensor
zwar funktioniert, hatte aber den Vorbehalt, auch Landschaft zuzulassen. Das war für mich in Ordnung, aber wenn Sie nur wollenportrait
und könnenreversePortrait
, können Sie die Orientierungsänderung in Ihrer Aktivität mitonConfigurationChanged
und abfangennewConfig.orientation
und Landschaftsänderungen einfach ignorieren oder überschreiben.Antworten:
Die React Native-App ist so ziemlich nur eine normale iOS-Anwendung. Sie können sie also genauso ausführen wie für alle anderen Apps. Deaktivieren Sie einfach (in XCode) die Option "Querformat links" und "Querformat rechts" als zulässige Geräteorientierungen in den allgemeinen Anwendungseigenschaften:
quelle
portrait
undupside down
, aber meine App wurde nicht automatisch gedreht, als ich den Bildschirm des Simulators drehte (zweimal um 90 Grad). Was ist das Problem?react-native 0.45.1
Für iOS ist Jareks Antwort großartig.
Für Android müssen Sie die Datei AndroidManifest.xml bearbeiten. Fügen Sie jeder Aktivität, die Sie im Hochformat sperren möchten, die folgende Zeile hinzu:
Ein vollständiges Beispiel könnte also so aussehen:
Die vollständige Liste der verfügbaren screenOrientation-Eigenschaften finden Sie in den Dokumenten hier: https://developer.android.com/guide/topics/manifest/activity-element.html
quelle
Update 2017:
{"orientation": "portrait"}
Derzeit empfehlen viele offizielle React Native-Handbücher wie dieses die Verwendung von Expo beim Erstellen von React Native-Apps. Daher werde ich zusätzlich zu den vorhandenen Antworten auch eine Expo-spezifische Lösung hinzufügen, die erwähnenswert ist, da sie sowohl für iOS als auch für Android funktioniert und nur erforderlich ist Stellen Sie es einmal ein, ohne sich mit der XCode-Konfiguration, AndroidManifest.xml usw. herumschlagen zu müssen.
Festlegen der Ausrichtung zur Erstellungszeit:
Wenn Sie Ihre React Native-Apps mit Expo erstellen, können Sie das
orientation
Feld in Ihrerapp.json
Datei verwenden - zum Beispiel:Es kann auf oder eingestellt werden
"portrait"
, was bedeutet, dass ohne Orientierungssperre automatisch gedreht wird."landscape"
"default"
Orientierung zur Laufzeit einstellen:
Sie können diese Einstellung auch zur Laufzeit überschreiben, indem Sie beispielsweise Folgendes ausführen:
wo das Argument sein kann:
ALL
- Alle 4 möglichen AusrichtungenALL_BUT_UPSIDE_DOWN
- Alle außer dem umgekehrten Porträt können alle 4 Ausrichtungen auf bestimmten Android-Geräten sein.PORTRAIT
- Hochformat, kann auf bestimmten Android-Geräten auch ein umgekehrtes Hochformat sein.PORTRAIT_UP
- Nur Porträt oben.PORTRAIT_DOWN
- Nur verkehrtes Porträt.LANDSCAPE
- Beliebige Landschaftsorientierung.LANDSCAPE_LEFT
- Nur linke Landschaft.LANDSCAPE_RIGHT
- Nur rechte Landschaft.Erkennen der Rotation:
Wenn Sie mehr als eine Ausrichtung zulassen, können Sie die Änderungen erkennen, indem Sie die
change
Ereignisse auf demDimensions
Objekt abhören:oder Sie können die Abmessungen auch jederzeit mit
Dimensions.get('window')
undDimensions.get('screen')
wie folgt abrufen :oder:
Wenn Sie sich das Ereignis anhören, erhalten Sie beide
window
undscreen
gleichzeitig. Deshalb greifen Sie anders darauf zu.Dokumentation:
Weitere Informationen finden Sie unter:
quelle
Answer for disable rotation in React Native.
For Android :
Gehen Sie zur Datei Androidmenifest.xml und fügen Sie eine Zeile hinzu: android: screenOrientation = "Porträt"
For IOS :
Ganz einfach müssen Sie den Rotationsmodus Ihres XCODE aktivieren oder deaktivieren
quelle
Wenn Sie Expo verwenden, können Sie dies einfach mit diesem Code tun:
Stellen Sie es vor dem Rendern auf App.js
Alle Optionen:
ALL
ALL_BUT_UPSIDE_DOWN
PORTRAIT
PORTRAIT_UP
PORTRAIT_DOWN
LANDSCAPE
LANDSCAPE_LEFT
LANDSCAPE_RIGHT
quelle
Für Android müssen Sie die Datei AndroidManifest.xml bearbeiten. Fügen Sie jeder Aktivität, die Sie im Hochformat sperren möchten, die folgende Zeile hinzu:
android: screenOrientation = "Porträt"
Ein vollständiges Beispiel könnte also so aussehen:
quelle
Für Android: In Ihre Manifestdatei einfügen:
Dann setzen Sie in das Anwendungs-Tag:
Und dann in allen Aktivitäten:
quelle
Verwenden Sie dies für ios ipad orientaion Problem möchten in plist Datei ändern https://www.reddit.com/r/reactnative/comments/7vkrfp/disabling_screen_rotate_in_react_native_both/
IOS:
quelle
Sie können das React-Native-Orientation-Locker- Modul und die
lockToPortrait()
Funktion verwenden.Dies kann hilfreich sein, wenn Sie auch einige Bildschirme mit entsperrter Ausrichtung haben möchten - in diesem Fall können Sie auch die
unlockAllOrientations()
Funktion verwenden.quelle
Wenn Sie das RN Expo-Projekt verwenden und die App eine Reaktionsnavigation enthält, hat mir das Einrichten der Navigation auf den folgenden Code geholfen.
quelle