在我之前的博客中,我写过如何使用 UIViewRepresentable 方法在 SwiftUI 中获取相机帧,但是要使用这种方法,我们需要重新访问苹果的 UIKit 框架,对于刚开始学习使用 SwiftUI 进行 iOS 开发的人来说,可能会遇到一些困难在理解这种方法时。所以今天我将与大家分享如何使用纯 SwiftUI 获取相机帧。
我相信与 UIViewRepresentable 方法相比,这个获取过程更容易并且处理的复杂性更低,而且代码更易于维护。
首先让我们创建我们的 CameraService 类
class CameraService: NSObject, ObservableObject {
@Published var cameraFrame: CGImage?
private let captureSession = AVCaptureSession()
private let videoOutput = AVCaptureVideoDataOutput()
private let captureQueue = DispatchQueue.init(label: "Camera.service", qos: .userInitiated)
override init() {
super.init()
addCameraInput()
addVideoOutput()
startSession()
}
}
</