I have the following code:
struct CameraPreview: UIViewRepresentable {
@ObservedObject var camera: Camera
class CameraView: UIView {
override class var layerClass: AnyClass {
AVCaptureVideoPreviewLayer.self
}
var videoPreviewLayer: AVCaptureVideoPreviewLayer {
return layer as! AVCaptureVideoPreviewLayer
}
}
func makeUIView(context: Context) -> CameraView {
let cameraView = CameraView()
cameraView.videoPreviewLayer.session = camera.session
cameraView.videoPreviewLayer.videoGravity = .resizeAspect
cameraView.videoPreviewLayer.cornerRadius = 12
cameraView.videoPreviewLayer.connection?.videoOrientation = .portrait
cameraView.videoPreviewLayer.backgroundColor = CGColor(red: 1.0, green: 0, blue: 0, alpha: 1)
camera.start()
return cameraView
}
func updateUIView(_ cameraView: CameraView, context: Context) {
}
}
But I haven’t been able to resize it in my SwiftUI View to the camera’s preview true size, I’m stuck where I have a bigger frame than it actually needs:
Is there a way to make the AVCaptureVideoPreviewLayer/UIViewRepresentable frame only the size of the camera preview?