Обновление 2017: {"orientation": "portrait"}
В настоящее время много официальных руководств по React Native, подобных этому рекомендуют использовать Expo при создании приложений React Native, поэтому в дополнение к существующим ответам я также добавлю решение для Expo, которое стоит отметить, потому что оно работает как для iOS, так и для Android, и вам нужно только установите его один раз без необходимости возиться с конфигурацией XCode, AndroidManifest.xml и т. д.
Установка ориентации во время сборки:
Если вы создаете свои приложения React Native с помощью Expo, вы можете использовать orientation
поле в своем app.json
файле, например:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
Он может быть установлен на "portrait"
, "landscape"
или "default"
что означает автоповорот без блокировки ориентации.
Установка ориентации во время выполнения:
Вы также можете переопределить этот параметр во время выполнения, запустив, например:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
где аргумент может быть:
ALL
- Все 4 возможных ориентации
ALL_BUT_UPSIDE_DOWN
- Все, кроме обратной портретной ориентации, на некоторых устройствах Android могут быть все 4 ориентации.
PORTRAIT
- Портретная ориентация, также может быть обратная портретная на некоторых устройствах Android.
PORTRAIT_UP
- Только верхний портрет.
PORTRAIT_DOWN
- Только перевернутый портрет.
LANDSCAPE
- Любая альбомная ориентация.
LANDSCAPE_LEFT
- Только левый пейзаж.
LANDSCAPE_RIGHT
- Только правый пейзаж.
Обнаружение вращения:
Когда вы разрешаете более одной ориентации, вы можете обнаруживать изменения, слушая change
события на Dimensions
объекте:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
или вы также можете просто получить размеры в любое время Dimensions.get('window')
и Dimensions.get('screen')
вот так:
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
или:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
Когда вы слушаете событие, вы получаете window
иscreen
одновременно, поэтому к нему доступ по-разному.
Документация:
Для получения дополнительной информации см .: