我想知道是否可以锁定iOS和Android上除一个屏幕以外的所有屏幕。我有一个视频播放器,要在旋转后全屏显示,但所有其他屏幕都必须是唯一的肖像。
为此我使用react-native-video
使用示例时,我设法使其旋转,但是我需要在XCODE和Android studio中设置可能的方向。
我还尝试了react-native-orientation,并在其上放了.lockToPortrait(),但倾斜后它又改变了。
感谢您的帮助
答案 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)
我经历过类似的事情。我只想将一个屏幕锁定为横向。我已经测试了Promise
和react-native-orientation
。他们俩都没有按预期工作。它是第一次锁定,但在锁定的横向屏幕上来回移动后,它滑到了纵向。
但是,我设法注册了react-native-orientation-locker
进行了仔细检查,并迫使它始终保持横向。参见下面的代码。
addOrientationListener
即使滑倒为肖像,也可以回到风景。
也许您可以创建具有以上行为的超类,并让每个屏幕对其进行扩展,以期获得期望。