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 Ihrer app.json
Datei verwenden - zum Beispiel:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
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:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
wo das Argument sein kann:
ALL
- Alle 4 möglichen Ausrichtungen
ALL_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 dem Dimensions
Objekt abhören:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
oder Sie können die Abmessungen auch jederzeit mit Dimensions.get('window')
und Dimensions.get('screen')
wie folgt abrufen :
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
oder:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
Wenn Sie sich das Ereignis anhören, erhalten Sie beide window
und screen
gleichzeitig. Deshalb greifen Sie anders darauf zu.
Dokumentation:
Weitere Informationen finden Sie unter: