Оновлення 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 - Все, окрім зворотного портрета, може бути в усіх 4 орієнтаціях на певних пристроях Android.
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одночасно, і тому ви отримуєте доступ до неї по-різному.
Документація:
Для отримання додаткової інформації див: