小编Lem*_*mon的帖子

iOS ARKit 应用程序:如何旋转 UI(屏幕)而不旋转内部相机视图?

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

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

let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
Run Code Online (Sandbox Code Playgroud)

并设置

override var shouldAutorotate: Bool {
    return false
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

我还尝试了另一种方法:

override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
    return UIInterfaceOrientationMask.landscapeRight
}
Run Code Online (Sandbox Code Playgroud)

但结果还是一样。

我希望它如下所示,UI 固定在横向右侧,但相机始终处于正常方向(重力向下):

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

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

uiinterfaceorientation ios arkit arscnview

5
推荐指数
0
解决办法
736
查看次数

标签 统计

arkit ×1

arscnview ×1

ios ×1

uiinterfaceorientation ×1