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 seu app.json
arquivo - por exemplo:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
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:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
onde o argumento pode ser:
ALL
- Todas as 4 orientações possíveis
ALL_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 no Dimensions
objeto:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
ou você também pode obter as dimensões a qualquer momento com Dimensions.get('window')
e Dimensions.get('screen')
assim:
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
ou:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
Quando você ouve o evento, obtém os dois window
e screen
ao mesmo tempo, por isso o acessa de maneira diferente.
Documentação:
Para obter mais informações, consulte: