摄像头previewView滞后于导航控制器层次结构

时间:2016-11-02 09:33:30

标签: swift camera

我正在使用以下粗略设置创建应用:

enter image description here

这是您可以看到的带有方形摄像机视图的摄像机视图控制器。下面的框用作通过navigationController.push转换到另一个视图控制器的按钮。在完成一些导航控制器推动后,摄像机视图变得迟钝并最终冻结。

我需要知道我是否正确地这样做了。我目前设置它,当viewDidDissapear,相机停止捕获。当viewWillAppear,相机恢复捕获。

我尝试使用self.dismiss按钮在模态视图中启动另一个视图控制器,这在相机视图中没有造成任何滞后。所以我认为导航控制器必然会以某种方式影响相机的实时预览。

编辑:

我进一步缩小了它,似乎滞后是由交互式流行手势引起的。

1 个答案:

答案 0 :(得分:0)

我通过使用背景线程解决了它。

DispatchQueue.global(qos: .background).async {
    print("This is run on the background queue")

    DispatchQueue.main.async {
        print("This is run on the main queue, after the previous code in outer block")
    }
}

结果表明我需要做的就是移动相机停止并将观察者恢复到后台线程,同时将包括动画等在内的所有UI元素移动到主线程。