有没有人能够覆盖/阻止在横向旋转 iPhone 应用程序的新 iPadOS 15 行为?

Has anyone been able to override/block the new iPadOS 15 behavior of rotating iPhone apps in landscape?

提问人:zattacks 提问时间:4/28/2022 更新时间:4/28/2022 访问量:174

问:

新行为

理想情况下,我们会有原生的iPad支持,但这是一条路,目前还不可行。因此,现在我们必须使用运行 iPhone 应用程序的 iPad。 混合使用 UIKit 的 Swift 和 Objective-C,作为上下文。

我正在开发的应用程序有一个相机视图控制器,在 iPadOS 15 之前,它不会在纵向和横向之间旋转视野。但是,使用这种新的旋转行为,当 iPad 处于横向状态时,UI 会以纵向显示。在相机的情况下,视野现在翻转了 90º。拍摄的图像没有翻转,但侧向视野不好看。

到目前为止,我尝试/观察到的如下:

  • 此新的旋转行为不受 UIViewController 的旋转方法控制。覆盖并且不会阻止此轮换。因此,这发生在设备级别,而不是视图控制器级别。shouldAutorotatesupportedInterfaceOrientations

  • 在设备级别,我只知道一种以编程方式更改方向的方法,即使用 UIDevice 属性上的私有 setter。显然,私有 API 是 App Store 的禁忌,利用它们的黑客攻击可能会在未来中断。也不是一个好的解决方案。orientation

在这一点上,我已经走到了尽头。我已经搜索了 Google 和 StackOverflow,以了解更多关于这个新功能如何工作的信息,在技术层面上,但细节很少。如果有人对此有更多信息或经验,那就太好了。即使答案是“没有骰子”。谢谢!

iOS Swift Objective-C iPad iPadOS

评论

1赞 CrystDragon 6/2/2022
问得好。我面临同样的问题。显然,苹果对此做出了一个非常随意的决定。我能想到的唯一解决方案不是阻止 Apple 的行为,而是在用户处于 iPhone 界面时响应 iPadOS 15 上的 UIDeviceOrientation 更改。当然,这完全违反了关于 UI 方向的代码应该只依赖于 UIInterfaceOrientation 而不是 UIDeviceOrientation 的范式......
0赞 zattacks 6/3/2022
最终对我有用的是将转换应用于 in .我也尝试过回应,但 IIRC 每个方向的大小类实际上并没有改变,并且该方法从未真正被调用过。UIImagePickerControlleronDeviceOrientationChangedtraitCollectionDidChange

答: 暂无答案