Me gustaría admitir solo la vista vertical. ¿Cómo puedo hacer que una aplicación React Native no gire automáticamente? Intenté buscar documentación y problemas de Github, pero no encontré nada útil.
ios
react-native
syg
fuente
fuente
sensorPortrait
a trabajar correctamente. Nunca admitiría Retrato al revés (es decirreversePortrait
). Sin embargo, el usofullSensor
funcionó, pero tenía la salvedad de permitir también el paisaje. Eso terminó estando bien para mí, pero si solo deseaportrait
yreversePortrait
, puede interceptar el cambio de orientación en su Actividad cononConfigurationChanged
ynewConfig.orientation
y simplemente ignorar o anular los cambios de paisaje.Respuestas:
La aplicación React Native es prácticamente una aplicación iOS normal, por lo que puede hacerlo exactamente de la misma manera que lo hace con todas las demás aplicaciones. Simplemente desmarque (en XCode) "Horizontal izquierda" y "Horizontal derecha" como Orientaciones de dispositivo permitidas en las propiedades generales de la aplicación:
fuente
portrait
yupside down
, pero mi aplicación no giró automáticamente cuando giré la pantalla del simulador (90 grados dos veces), ¿cuál es el problema?react-native 0.45.1
Para iOS, la respuesta de Jarek es genial.
Para Android, debe editar el archivo AndroidManifest.xml. Agregue la siguiente línea a cada actividad que desee bloquear en modo vertical:
Entonces, un ejemplo completo podría verse así:
Consulte la lista completa de propiedades de orientación de pantalla disponibles en los documentos, aquí: https://developer.android.com/guide/topics/manifest/activity-element.html
fuente
Actualización de 2017:
{"orientation": "portrait"}
Actualmente, muchas guías oficiales de React Native como esta recomiendan usar Expo al crear aplicaciones React Native, por lo que, además de las respuestas existentes, también agregaré una solución específica de Expo que vale la pena señalar porque funciona tanto para iOS como para Android y solo necesita configúrelo una vez sin necesidad de meterse con la configuración de XCode, AndroidManifest.xml, etc.
Configuración de la orientación en el momento de la construcción:
Si está creando sus aplicaciones React Native con Expo, puede usar el
orientation
campo en suapp.json
archivo, por ejemplo:Se puede configurar en
"portrait"
,"landscape"
o lo"default"
que significa rotar automáticamente sin bloqueo de orientación.Configuración de la orientación en tiempo de ejecución:
También puede anular esa configuración en tiempo de ejecución ejecutando, por ejemplo:
donde el argumento puede ser:
ALL
- Las 4 orientaciones posiblesALL_BUT_UPSIDE_DOWN
- Todos, excepto el retrato inverso, podrían tener las 4 orientaciones en ciertos dispositivos Android.PORTRAIT
- Orientación vertical, también podría ser vertical en ciertos dispositivos Android.PORTRAIT_UP
- Solo retrato al revés.PORTRAIT_DOWN
- Solo retrato al revés.LANDSCAPE
- Cualquier orientación horizontal.LANDSCAPE_LEFT
- Solo paisaje izquierdo.LANDSCAPE_RIGHT
- Solo paisaje derecho.Detectando la rotación:
Cuando permite más de una orientación, puede detectar los cambios escuchando los
change
eventos en elDimensions
objeto:o también puede obtener las dimensiones en cualquier momento con
Dimensions.get('window')
yDimensions.get('screen')
así:o:
Cuando escuchas el evento, obtienes ambos
window
yscreen
al mismo tiempo, por eso accedes a él de manera diferente.Documentación:
Para obtener más información, consulte:
fuente
Answer for disable rotation in React Native.
For Android :
Vaya al archivo Androidmenifest.xml y agregue una línea: android: screenOrientation = "portrait"
For IOS :
Simple, tienes que marcar o desmarcar el modo de rotación de tu XCODE
fuente
Si usa Expo, puede hacerlo simplemente con este código:
Ponlo en App.js antes de renderizar
Todas las opciones:
ALL
ALL_BUT_UPSIDE_DOWN
PORTRAIT
PORTRAIT_UP
PORTRAIT_DOWN
LANDSCAPE
LANDSCAPE_LEFT
LANDSCAPE_RIGHT
fuente
Para Android, debe editar el archivo AndroidManifest.xml. Agregue la siguiente línea a cada actividad que desee bloquear en modo vertical:
android: screenOrientation = "retrato"
Entonces, un ejemplo completo podría verse así:
fuente
Para Android: en su archivo de manifiesto, ponga:
Luego, dentro de la etiqueta de la aplicación, coloque:
Y luego en todo el conjunto de actividades:
fuente
use esto para el problema de orientación de ios ipad desea cambiar en el archivo plist https://www.reddit.com/r/reactnative/comments/7vkrfp/disabling_screen_rotate_in_react_native_both/
IOS:
fuente
Puede usar el módulo y la función react-native-Orientation-Locker
lockToPortrait()
.Esto puede ser útil si también desea tener algunas de las pantallas con orientación desbloqueada; en este caso, también podría usar la
unlockAllOrientations()
función.fuente
Si está utilizando el proyecto RN expo y la aplicación contiene react-navigation, entonces me ayudó configurar la navegación en el siguiente código.
fuente