我正在尝试在我的iPhone应用程序中嵌入一个简单的视图以快速拍照。一切都很好,但我遇到了相机启动时间的一些问题。在Apple的示例项目中,AVCaptureSession的-startRunning
没有在主线程上执行,这似乎是必要的。我在视图初始化期间设置捕获会话,并在单独的线程中启动它。现在我在-didMoveToSuperview
中添加了AVCaptureVideoPreviewLayer
。没有多线程时一切正常(UI被阻止约1秒),但是使用GCD时,UI有时可以工作,有时需要等待很长时间才能“解冻”或显示预览。
如何可靠地处理相机启动延迟,而不会阻塞主线程(延迟本身不是问题)?
希望你们理解我的问题:D
提前感谢!
顺便说一句:这是我的概念验证项目(没有GCD),我现在正在重用它来制作另一个应用程序:http://github.com/dariolass/QuickShotView
AVCaptureSession
的startRunning
和stopRunning
。 - Tamás SengelDispatchQueue.global(qos: .background).async
块中即可。 - Tamás Sengel