React Native:仅允许特定屏幕更改方向

时间:2019-02-15 18:22:01

标签: react-native video

我想知道是否可以锁定iOS和Android上除一个屏幕以外的所有屏幕。我有一个视频播放器,要在旋转后全屏显示,但所有其他屏幕都必须是唯一的肖像。

为此我使用react-native-video

使用示例时,我设法使其旋转,但是我需要在XCODE和Android studio中设置可能的方向。

我还尝试了react-native-orientation,并在其上放了.lockToPortrait(),但倾斜后它又改变了。

感谢您的帮助

2 个答案:

答案 0 :(得分:3)

const {navigation} = props

useEffect(() => {
    navigation.addListener("focus", () => {
      ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.DEFAULT);
    });

    navigation.addListener("blur", () => {
      ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.PORTRAIT);
    });
  }, [navigation]);

当我们要允许屏幕旋转的屏幕时,将触发focus事件,而当用户离开包含此代码的屏幕时,将触发blur事件,然后将其限制为PORTRAIT(在本示例中)情况。)

答案 1 :(得分:2)

我经历过类似的事情。我只想将一个屏幕锁定为横向。我已经测试了Promisereact-native-orientation。他们俩都没有按预期工作。它是第一次锁定,但在锁定的横向屏幕上来回移动后,它滑到了纵向。

但是,我设法注册了react-native-orientation-locker进行了仔细检查,并迫使它始终保持横向。参见下面的代码。

addOrientationListener

即使滑倒为肖像,也可以回到风景。

也许您可以创建具有以上行为的超类,并让每个屏幕对其进行扩展,以期获得期望。