Mise à jour 2017: {"orientation": "portrait"}
Actuellement, de nombreux guides officiels React Native comme celui-ci recommandent d'utiliser Expo lors de la création d'applications React Native.Ainsi, en plus des réponses existantes, j'ajouterai également une solution spécifique à Expo, ce qui vaut la peine d'être noté car elle fonctionne à la fois pour iOS et Android et il vous suffit de réglez-le une fois sans avoir besoin de jouer avec la configuration XCode, AndroidManifest.xml, etc.
Définition de l'orientation au moment de la construction:
Si vous créez vos applications React Native avec Expo, vous pouvez utiliser le orientation
champ dans votre app.json
fichier - par exemple:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
Il peut être réglé sur "portrait"
, "landscape"
ou "default"
ce qui signifie autorotation sans verrouillage d'orientation.
Définition de l'orientation lors de l'exécution:
Vous pouvez également remplacer ce paramètre lors de l'exécution en exécutant, par exemple:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
où l'argument peut être:
ALL
- Les 4 orientations possibles
ALL_BUT_UPSIDE_DOWN
- Tout sauf portrait inversé, pourrait être les 4 orientations sur certains appareils Android.
PORTRAIT
- Orientation portrait, peut également être portrait inversé sur certains appareils Android.
PORTRAIT_UP
- Portrait à l'envers uniquement.
PORTRAIT_DOWN
- Portrait à l'envers uniquement.
LANDSCAPE
- Toute orientation paysage.
LANDSCAPE_LEFT
- Paysage de gauche uniquement.
LANDSCAPE_RIGHT
- Paysage droit uniquement.
Détection de la rotation:
Lorsque vous autorisez plus d'une orientation, vous pouvez détecter les changements en écoutant les change
événements sur l' Dimensions
objet:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
ou vous pouvez également simplement obtenir les dimensions à tout moment avec Dimensions.get('window')
et Dimensions.get('screen')
comme ceci:
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
ou:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
Lorsque vous écoutez l'événement, vous obtenez les deux window
et screen
en même temps, c'est pourquoi vous y accédez différemment.
Documentation:
Pour plus d'informations, voir: