React Native: разрешить только определенному экрану изменять ориентацию - PullRequest
0 голосов
/ 15 февраля 2019

Мне было интересно, можно ли заблокировать все экраны на iOS и Android, кроме одного экрана.У меня есть видеоплеер, который я хочу показывать в полноэкранном режиме после поворота, но все остальные экраны должны быть единственным портретом.

Для этого я использую реагирующее видео.

Iмне удалось заставить его вращаться при использовании сэмплов, но мне нужно установить возможные ориентации в XCODE и Android studio.

Я также попытался реагировать на native-ориентацию и наложить на него .lockToPortrait (), но после наклона,это снова меняется.

Любая помощь приветствуется

1 Ответ

0 голосов
/ 21 февраля 2019

Я пережил нечто подобное.Я хочу заблокировать только один экран в альбомной ориентации.Я протестировал 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);
}

Даже если он переместится в портретную ориентацию, он вернется в ландшафт.

Возможно, вы могли бы создать суперкласс с описанным выше поведением и заставить каждый экран расширять его, ожидайте этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...