Eu gostaria de oferecer suporte apenas para visualização em retrato. Como posso fazer com que um aplicativo React Native não gire automaticamente? Tentei pesquisar documentação e problemas no Github, mas não encontrei nada útil.
ios
react-native
syg
fonte
fonte
sensorPortrait
a trabalhar corretamente. Ele nunca suportaria Retrato de cabeça para baixo (ou sejareversePortrait
). No entanto, usarfullSensor
funcionou, mas tinha a ressalva de permitir também a paisagem. Isso acabou sendo bom para mim, mas se você quiser apenasportrait
ereversePortrait
, pode interceptar a mudança de orientação em sua atividade comonConfigurationChanged
enewConfig.orientation
e simplesmente ignorar ou substituir as mudanças de paisagem.Respostas:
O aplicativo React Native é basicamente um aplicativo iOS normal, então você pode fazer isso exatamente da mesma forma que faria para todos os outros aplicativos. Simplesmente desmarque (no XCode) "Landscape Left" e "Landscape Right" conforme as Orientações do dispositivo permitidas nas propriedades gerais do aplicativo:
fonte
portrait
eupside down
, mas meu aplicativo não girou automaticamente quando giro a tela do simulador (90 graus duas vezes), qual é o problema?react-native 0.45.1
Para iOS, a resposta de Jarek é ótima.
Para Android, você precisa editar o arquivo AndroidManifest.xml. Adicione a seguinte linha a cada atividade que você deseja bloquear no modo retrato:
Portanto, um exemplo completo pode ter a seguinte aparência:
Veja a lista completa de propriedades screenOrientation disponíveis nos documentos, aqui: https://developer.android.com/guide/topics/manifest/activity-element.html
fonte
Atualização de 2017:
{"orientation": "portrait"}
Atualmente, muitos guias oficiais do React Native como este recomendam o uso do Expo ao criar aplicativos do React Native, então, além das respostas existentes, também adicionarei uma solução específica da Expo que vale a pena notar porque funciona para iOS e Android e você só precisa configure-o uma vez sem a necessidade de mexer com a configuração do XCode, AndroidManifest.xml etc.
Definir a orientação no momento da construção:
Se você estiver criando seus aplicativos React Native com Expo, poderá usar o
orientation
campo em seuapp.json
arquivo - por exemplo:Pode ser definido como
"portrait"
,"landscape"
ou o"default"
que significa rotação automática sem bloqueio de orientação.Definir orientação em tempo de execução:
Você também pode substituir essa configuração no tempo de execução executando, por exemplo:
onde o argumento pode ser:
ALL
- Todas as 4 orientações possíveisALL_BUT_UPSIDE_DOWN
- Todos, exceto o retrato reverso, podem ser todas as 4 orientações em determinados dispositivos Android.PORTRAIT
- Orientação retrato, também pode ser retrato reverso em certos dispositivos Android.PORTRAIT_UP
- Somente retrato de cabeça para baixo.PORTRAIT_DOWN
- Retrato de cabeça para baixo apenas.LANDSCAPE
- Qualquer orientação de paisagem.LANDSCAPE_LEFT
- Apenas paisagem esquerda.LANDSCAPE_RIGHT
- Apenas paisagem certa.Detectando a rotação:
Quando você permite mais de uma orientação, pode detectar as mudanças ouvindo os
change
eventos noDimensions
objeto:ou você também pode obter as dimensões a qualquer momento com
Dimensions.get('window')
eDimensions.get('screen')
assim:ou:
Quando você ouve o evento, obtém os dois
window
escreen
ao mesmo tempo, por isso o acessa de maneira diferente.Documentação:
Para obter mais informações, consulte:
fonte
Answer for disable rotation in React Native.
For Android :
Vá para o arquivo Androidmenifest.xml e adicione uma linha: android: screenOrientation = "portrait"
For IOS :
Simples, você tem que marcar ou desmarcar o modo de rotação do seu XCODE
fonte
Se você usa Expo, pode fazê-lo simplesmente com este código:
Coloque-o em App.js antes de renderizar
Todas as opções:
ALL
ALL_BUT_UPSIDE_DOWN
PORTRAIT
PORTRAIT_UP
PORTRAIT_DOWN
LANDSCAPE
LANDSCAPE_LEFT
LANDSCAPE_RIGHT
fonte
Para Android, você precisa editar o arquivo AndroidManifest.xml. Adicione a seguinte linha a cada atividade que você deseja bloquear no modo retrato:
android: screenOrientation = "retrato"
Portanto, um exemplo completo pode ter a seguinte aparência:
fonte
Para Android: Em seu arquivo de manifesto, coloque:
Então, dentro da tag do aplicativo, coloque:
E então, em todo o conjunto de atividades:
fonte
use isso para problemas de orientação de ipad ios que deseja alterar no arquivo plist https://www.reddit.com/r/reactnative/comments/7vkrfp/disabling_screen_rotate_in_react_native_both/
IOS:
fonte
Você pode usar o módulo e a função de bloqueio de orientação reac-nativo
lockToPortrait()
.Isso pode ser útil se você também gostaria de ter algumas das telas com orientação desbloqueada - neste caso, você também pode usar a
unlockAllOrientations()
função.fonte
Se você estiver usando o projeto RN expo, e o app contiver navegação reativa, configurar a navegação para o código a seguir me ajudou.
fonte