Я создаю cameraApp как часть проекта, который я делаю, и я относительно новичок в swiftUI. Я использую AVFoundation
, и мне нужно создать PreviewLayer. Однако я не могу создать previewLayer
, потому что не знаю, как его отобразить. Я ознакомился с несколькими учебными пособиями и прочел документацию Apple.
Так выглядит мой код
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)
}
}