4

我正在尝试使用 ARKit 制作一个具有一些 AR 体验的 iOS 应用程序。该应用程序现在有一个带有“开始”按钮的启动视图(在应用程序刚刚启动后首先显示)和一个 AR 视图(在我点击启动视图中的“开始”按钮后显示),并且我也有每个视图控制器。AR 视图本质上是一个全屏 ARSCNView,它显示来自相机的实时图像,以及一些 UIButton。

在我想在每个阶段指定方向之前,所有的事情似乎都运作良好。需要将启动视图设置为纵向,AR 视图设置为横向。为了自动更改屏幕的方向,我尝试viewDidLoad()为 AR ViewController 添加以下代码:

let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")

并设置

override var shouldAutorotate: Bool {
    return false
}

但是,效果并不好 --- 虽然 UI 的方向已正确更改,但相机预览也“旋转”了 90 度(因此您从应用中看到的所有图像都将旋转 90 度):

image1 (设备现在物理上是纵向的,相机视图在某种程度上是垂直的)

image2 (设备现在物理上是横向的,但相机视图仍然是垂直的)

我还尝试了另一种方法:

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.landscapeRight
}

但它最终以同样的方式结束。

我希望它如下所示,用户界面固定为横向,但相机始终处于正常方向(重力向下):

image3 (这是在允许自动旋转的情况下捕获的,但我希望它在切换到此视图时自动旋转!)

任何帮助或提示将不胜感激!

4

0 回答 0