Wie mache ich eine Camera View in SwiftUI mit AV Foundation oder HostingController?

Antwort

Um eine Camera View in SwiftUI zu erstellen, ist die Verwendung von AVFoundation der gängigste und effektivste Ansatz. Hier ist eine grundlegende Anleitung, wie du dies umsetzen kannst: 1. **AVCaptureSession einrichten**: Du musst eine `AVCaptureSession` erstellen, um die Kamera zu steuern. 2. **AVCaptureVideoPreviewLayer**: Verwende diese Schicht, um die Kameravorschau anzuzeigen. 3. **SwiftUI View**: Integriere die Kameraansicht in eine SwiftUI-View. Hier ist ein einfaches Beispiel: ```swift import SwiftUI import AVFoundation struct CameraView: UIViewControllerRepresentable { class Coordinator: NSObject, AVCapturePhotoCaptureDelegate { // Hier kannst du die Logik für das Aufnehmen von Fotos hinzufügen } func makeCoordinator() -> Coordinator { return Coordinator() } func makeUIViewController(context: Context) -> UIViewController { let viewController = UIViewController() let captureSession = AVCaptureSession() guard let videoCaptureDevice = AVCaptureDevice.default(for: .video) else { return viewController } let videoInput: AVCaptureDeviceInput do { videoInput = try AVCaptureDeviceInput(device: videoCaptureDevice) } catch { return viewController } if (captureSession.canAddInput(videoInput)) { captureSession.addInput(videoInput) } else { return viewController } let previewLayer = AVCaptureVideoPreviewLayer(session: captureSession) previewLayer.frame = viewController.view.layer.bounds previewLayer.videoGravity = .resizeAspectFill viewController.view.layer.addSublayer(previewLayer) captureSession.startRunning() return viewController } func updateUIViewController(_ uiViewController: UIViewController, context: Context) { // Hier kannst du Updates für die ViewController-Logik hinzufügen } } struct ContentView: View { var body: some View { CameraView() .edgesIgnoringSafeArea(.all) } } ``` In diesem Beispiel wird eine einfache Kameraansicht erstellt, die die Kamera des Geräts verwendet. Du kannst die `Coordinator`-Klasse erweitern, um zusätzliche Funktionen wie das Aufnehmen von Fotos hinzuzufügen. Die Verwendung von `UIViewControllerRepresentable` ermöglicht es dir, UIKit-Komponenten in SwiftUI zu integrieren, was in diesem Fall ideal ist, da AVFoundation stark auf UIKit basiert.

Frage stellen und sofort Antwort erhalten