Я хотел бы поддерживать только портретный вид. Как я могу заставить приложение React Native не автоповоротиться? Я пробовал искать документацию и проблемы с Github, но ничего полезного не нашел.
ios
react-native
syg
источник
источник
sensorPortrait
нормально работать. Он никогда не поддерживает перевернутый портрет (т.е.reversePortrait
). ТемfullSensor
не менее, использование действительно сработало, но оно также допускало пейзаж. В итоге для меня это было хорошо, но если вы хотите толькоportrait
иreversePortrait
, вы можете перехватить изменение ориентации в своей деятельности с помощьюonConfigurationChanged
иnewConfig.orientation
и просто игнорировать или переопределить изменения ландшафта.Ответы:
Приложение React Native - это в значительной степени обычное приложение для iOS, поэтому вы можете делать это точно так же, как и для всех других приложений. Просто снимите галочки (в XCode) с «Пейзаж слева» и «Пейзаж справа», как разрешено Ориентация устройства в общих свойствах приложения:
источник
portrait
иupside down
, но мое приложение не автоматически поворачивается, когда я поворачиваю экран симулятора (на 90 градусов дважды), в чем проблема?react-native 0.45.1
Для iOS ответ Ярека великолепен.
Для Android необходимо отредактировать файл AndroidManifest.xml. Добавьте следующую строку к каждому действию, которое вы хотите заблокировать в портретном режиме:
Итак, полный пример может выглядеть так:
См. Полный список доступных свойств screenOrientation в документации здесь: https://developer.android.com/guide/topics/manifest/activity-element.html.
источник
Обновление 2017:
{"orientation": "portrait"}
В настоящее время много официальных руководств по React Native, подобных этому рекомендуют использовать Expo при создании приложений React Native, поэтому в дополнение к существующим ответам я также добавлю решение для Expo, которое стоит отметить, потому что оно работает как для iOS, так и для Android, и вам нужно только установите его один раз без необходимости возиться с конфигурацией XCode, AndroidManifest.xml и т. д.
Установка ориентации во время сборки:
Если вы создаете свои приложения React Native с помощью Expo, вы можете использовать
orientation
поле в своемapp.json
файле, например:Он может быть установлен на
"portrait"
,"landscape"
или"default"
что означает автоповорот без блокировки ориентации.Установка ориентации во время выполнения:
Вы также можете переопределить этот параметр во время выполнения, запустив, например:
где аргумент может быть:
ALL
- Все 4 возможных ориентацииALL_BUT_UPSIDE_DOWN
- Все, кроме обратной портретной ориентации, на некоторых устройствах Android могут быть все 4 ориентации.PORTRAIT
- Портретная ориентация, также может быть обратная портретная на некоторых устройствах Android.PORTRAIT_UP
- Только верхний портрет.PORTRAIT_DOWN
- Только перевернутый портрет.LANDSCAPE
- Любая альбомная ориентация.LANDSCAPE_LEFT
- Только левый пейзаж.LANDSCAPE_RIGHT
- Только правый пейзаж.Обнаружение вращения:
Когда вы разрешаете более одной ориентации, вы можете обнаруживать изменения, слушая
change
события наDimensions
объекте:или вы также можете просто получить размеры в любое время
Dimensions.get('window')
иDimensions.get('screen')
вот так:или:
Когда вы слушаете событие, вы получаете
window
иscreen
одновременно, поэтому к нему доступ по-разному.Документация:
Для получения дополнительной информации см .:
источник
Answer for disable rotation in React Native.
For Android :
Перейдите в файл Androidmenifest.xml и добавьте одну строчку: android: screenOrientation = "portrait"
For IOS :
Просто вам нужно установить или снять флажок режима вращения с вашего XCODE
источник
Если вы используете Expo, вы можете сделать это просто с помощью этого кода:
Поместите его в App.js перед рендерингом
Все варианты:
ALL
ALL_BUT_UPSIDE_DOWN
PORTRAIT
PORTRAIT_UP
PORTRAIT_DOWN
LANDSCAPE
LANDSCAPE_LEFT
LANDSCAPE_RIGHT
источник
Для Android необходимо отредактировать файл AndroidManifest.xml. Добавьте следующую строку к каждому действию, которое вы хотите заблокировать в портретном режиме:
android: screenOrientation = "портрет"
Итак, полный пример может выглядеть так:
источник
Для Android: в файле манифеста укажите:
Затем внутри тега приложения поместите:
И затем во всем наборе действий:
источник
используйте это для проблемы ориентации ios ipad, хотите изменить в файле plist https://www.reddit.com/r/reactnative/comments/7vkrfp/disables_screen_rotate_in_react_native_both/
IOS:
источник
Вы можете использовать модуль и функцию react-native-Ориентация-шкафчик
lockToPortrait()
.Это может быть полезно, если вы также хотите иметь некоторые экраны с разблокированной ориентацией - в этом случае вы также можете использовать
unlockAllOrientations()
функцию.источник
Если вы используете проект RN expo, а приложение содержит реагирующую навигацию, то настройка навигации по следующему коду мне помогла.
источник