Я пережил нечто подобное.Я хочу заблокировать только один экран в альбомной ориентации.Я протестировал react-native-orientation
и react-native-orientation-locker
.Ни один из них не сработал, как ожидалось.Он блокируется в первый раз, но после перехода назад и вперед к заблокированному экранному ландшафту он перемещается в портретное положение.
Однако мне удалось зарегистрироваться на addOrientationListener
, чтобы выполнить двойную проверку и заставить его выполнитьвсегда оставайтесь в пейзаже.См. Код ниже.
_onOrientationDidChange = (orientation) => {
if (orientation == 'PORTRAIT') {
Orientation.lockToLandscapeLeft();
}
};
componentDidMount() {
Orientation.lockToLandscapeLeft();
Orientation.addOrientationListener(this._onOrientationDidChange);
}
componentWillUnmount() {
Orientation.unlockAllOrientations()
Orientation.removeOrientationListener(this._onOrientationDidChange);
}
Даже если он переместится в портретную ориентацию, он вернется в ландшафт.
Возможно, вы могли бы создать суперкласс с описанным выше поведением и заставить каждый экран расширять его, ожидайте этого.