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 orientationFeld in Ihrer app.jsonDatei 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 changeEreignisse auf dem DimensionsObjekt 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 windowund screengleichzeitig. Deshalb greifen Sie anders darauf zu.
Dokumentation:
Weitere Informationen finden Sie unter: