I am creating a cameraApp as part of a project I am doing and I am relatively new to swiftUI. I am using AVFoundation and I need to create a previewLayer. However, I am unable to create a previewLayer because I don't know how I can display it. I have followed a few tutorials and read Apple's documentation.
This is what my code looks like
struct ContentView: View {
var captureSession = AVCaptureSession()
var currentCamera: AVCaptureDevice?
var photoOutput: AVCapturePhotoOutput?
var cameraPreviewLayer: AVCaptureVideoPreviewLayer?
func setupCaptureSession() {
captureSession.canSetSessionPreset(.high)
}
mutating func setupDevice() {
let videoDevice = AVCaptureDevice.default(.builtInWideAngleCamera,
for: .video, position: .unspecified)
currentCamera = videoDevice
}
func setupInputOutput() {
do {
let captureDeviceInput = try AVCaptureDeviceInput(device: currentCamera!)
captureSession.addInput(captureDeviceInput)
photoOutput!.supportedPhotoCodecTypes(for: .jpg)
} catch {
print("err")
}
}
mutating func setupPreviewLayer() {
cameraPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
cameraPreviewLayer?.videoGravity = AVLayerVideoGravity.resizeAspectFill
cameraPreviewLayer?.connection?.videoOrientation =
AVCaptureVideoOrientation.landscapeRight
cameraPreviewLayer?.frame = self.view.frame
self.view.insertSublayer(cameraPreviewLayer!, at: 0)
}
func startRunningCaptureSession() {
captureSession.startRunning()
}
var body: some View {
Text("Hello World")
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}