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