Je voudrais prendre en charge uniquement la vue portrait. Comment puis-je faire en sorte qu'une application React Native ne tourne pas automatiquement? J'ai essayé de rechercher de la documentation et des problèmes Github, mais je n'ai rien trouvé d'utile.
ios
react-native
syg
la source
la source
sensorPortrait
à fonctionner correctement. Il ne prendrait jamais en charge Portrait à l'envers (iereversePortrait
). Cependant, l'utilisationfullSensor
fonctionnait mais elle avait la mise en garde de permettre également le paysage. Cela a fini par me convenir, mais si vous ne voulez queportrait
etreversePortrait
, vous pouvez intercepter le changement d'orientation de votre activité aveconConfigurationChanged
etnewConfig.orientation
et simplement ignorer ou remplacer les changements de paysage.Réponses:
L'application React Native est à peu près une application iOS normale, vous pouvez donc le faire exactement de la même manière que pour toutes les autres applications. Décochez simplement (dans XCode) les options "Paysage à gauche" et "Paysage à droite" comme Orientations de périphérique autorisées dans les propriétés générales de l'application:
la source
portrait
etupside down
, mais mon application ne tournait pas automatiquement lorsque je faisais pivoter l'écran du simulateur (deux fois à 90 degrés), quel est le problème?react-native 0.45.1
Pour iOS, la réponse de Jarek est excellente.
Pour Android, vous devez modifier le fichier AndroidManifest.xml. Ajoutez la ligne suivante à chaque activité que vous souhaitez verrouiller en mode portrait:
Ainsi, un exemple complet pourrait ressembler à ceci:
Voir la liste complète des propriétés screenOrientation disponibles dans la documentation, ici: https://developer.android.com/guide/topics/manifest/activity-element.html
la source
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 votreapp.json
fichier - par exemple: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:
où l'argument peut être:
ALL
- Les 4 orientations possiblesALL_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:ou vous pouvez également simplement obtenir les dimensions à tout moment avec
Dimensions.get('window')
etDimensions.get('screen')
comme ceci:ou:
Lorsque vous écoutez l'événement, vous obtenez les deux
window
etscreen
en même temps, c'est pourquoi vous y accédez différemment.Documentation:
Pour plus d'informations, voir:
la source
Answer for disable rotation in React Native.
For Android :
Accédez au fichier Androidmenifest.xml et ajoutez une ligne: android: screenOrientation = "portrait"
For IOS :
Simple, vous devez cocher ou décocher le mode de rotation de votre XCODE
la source
Si vous utilisez Expo, vous pouvez le faire simplement avec ce code:
Mettez-le sur App.js avant le rendu
Toutes les options:
ALL
ALL_BUT_UPSIDE_DOWN
PORTRAIT
PORTRAIT_UP
PORTRAIT_DOWN
LANDSCAPE
LANDSCAPE_LEFT
LANDSCAPE_RIGHT
la source
Pour Android, vous devez modifier le fichier AndroidManifest.xml. Ajoutez la ligne suivante à chaque activité que vous souhaitez verrouiller en mode portrait:
android: screenOrientation = "portrait"
Ainsi, un exemple complet pourrait ressembler à ceci:
la source
Pour Android: dans votre fichier manifeste, mettez:
Ensuite, à l'intérieur de la balise d'application, mettez:
Et puis dans tous les ensembles d'activités:
la source
utilisez ceci pour ios ipad orientaion issue voulez changer dans le fichier plist https://www.reddit.com/r/reactnative/comments/7vkrfp/disabling_screen_rotate_in_react_native_both/
IOS:
la source
Vous pouvez utiliser le module et la fonction react-native-orientation-locker
lockToPortrait()
.Cela peut être utile si vous souhaitez également avoir certains des écrans avec une orientation déverrouillée - dans ce cas, vous pouvez également utiliser la
unlockAllOrientations()
fonction.la source
Si vous utilisez le projet RN expo et que l'application contient react-navigation, la configuration de la navigation vers le code suivant m'a aidé.
la source