无法在iPad iOs上锁定屏幕方向

5

注意:我知道已经有很多关于这个问题的帖子了。但是它们都有些过时,一个也不能解决问题,因此我发布了一个新的帖子。

问题

iPad无法锁定特定的屏幕方向。

软件包

"expo": "~44.0.0",
"expo-screen-orientation": "^4.1.2",
"react": "17.0.1",
"react-dom": "17.0.1",
"react-native": "0.64.3",
(Ands loads of others that arent relevent)

信息

尝试将屏幕定向锁定为横向。有一个问题:在手机上应该是纵向,而在平板电脑上则应该是横向。手机可以正常工作(两种方向都可),但是在平板电脑上似乎无法使其工作。

是的,我确实在app.json中添加了"requireFullScreen": true。 并且app.json不包含orientation属性(即使使用了这个属性也没有效果)。

有趣的事实 - 尝试将orientation设置为横向在app.json中,在iPhone上可以正常工作,但在iPad上却没有任何作用。我仍然可以轻松旋转屏幕。

代码

在最顶层的应用程序(app.js)中,我创建了一个简单的方法(位于function App()内):

  const foo = async () => {
    await ScreenOrientation.lockAsync(ScreenOrientation.OrientationLock.LANDSCAPE_LEFT);
  };

我称之为:foo();

然后返回(这与问题无关)。请注意,应用程序的导出方式如下:export default registerRootComponent(App);

如果使用 iPhone,它可以正常工作。但是在 iPad 上 - 我可以旋转屏幕(也就是说它没有锁定)。

尝试了许多不同的 iPad(模拟器),但都无法正常工作。

正如先前提到的 - 有很多报告,但似乎都过时或无法工作。


同样的问题,iPad设备可以按照上述方法旋转屏幕。https://github.com/expo/expo/issues/5339 - 此线程中的用户提到在构建后应该正常工作,您能确认吗? - asdj1234
1
@CheeJiaYuan 这个问题在此之后已经尝试过了。结果是一样的,即无法确认用户所说的内容。 - Lith
啊,我明白了。我会继续在我的端上工作,看看如何解决它,但是现在对我来说这不是一个高优先级的问题。 - asdj1234
明白了。我们也把重点转移到了更相关/重要的事情上。如果你将来找到了解决方法,我会很感激你与我们分享 :) @CheeJiaYuan - Lith
2个回答

0

从 Expo 文档 中得到:

Apple 在 iOS 9 中为 iPad 添加了分屏模式的支持,这改变了系统处理屏幕方向的方式。简而言之,在 iOS 中,除非你将两个应用程序并排打开,否则你的 iPad 总是处于横屏模式。为了能够使用该模块锁定屏幕方向,您需要禁用此功能的支持。有关分屏视图模式的更多信息,请查看官方 Apple 文档

当然,这基本上告诉我们什么都没有。


嗯...听起来很有趣。你自己或者读到这篇文章的人,有没有尝试过在iOS设备上锁定屏幕方向,同时禁用分屏功能?因为这似乎是一个可行的解决方案。 - Lith
我似乎找不到任何官方文档提到如何选择退出该功能。我想也许现在这是强制性的或者类似的情况。 - JCraine

-1

我曾经遇到过同样的问题,而我解决它的方法对我很有效。在XCode中打开你的React Native项目(通过打开相应的xcworkspace文件)。点击左侧的文件图标,然后点击你的项目。对于我来说,它是这样的:- 在XCode中看到的文件

点击后,您应该会看到您的项目设置。点击“常规”,在该页面中,您应该会找到一个名为“部署信息”的选项卡。在此选项卡下,您应该会找到“设备方向”。勾选“纵向”旁边的复选框,您的问题就应该得到解决了。

XCode中带有复选框的图片


这不允许在不同设备上采用不同的方向。例如:手机-竖屏,平板电脑-横屏。 由于该项目是由其他进程构建并仅从GIT获取代码,因此这些设置不会受到影响。 - Lith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接