Get CameraOutput rendered properly on top

40 views Asked by At

I have folllowing code:

var body: some View {
        VStack {
            CameraView()
        }
...

override public func viewDidLoad() {
        super.viewDidLoad()
        
        // Set up the video preview view.
        previewView.session = session
        previewView.videoPreviewLayer.videoGravity = videoGravity
        previewView.videoPreviewLayer.connection?.videoOrientation = AVCaptureVideoOrientation.portrait
        previewView.frame = view.frame
...

How to get my CameraPreview rendered on top of the view. Because there is that topmargin I don't know where it comes from.

It's very strange, if I try previewView.frame.offset(x: 0, y: -90), it looks nearly perfect, but that's not a solution, that's bad coding.

Here is a Screenshot

2

There are 2 answers

2
DrJay On

try using .edgesIgnoringSafeArea

var body: some View {
    VStack {
        CameraView()
    }
    .edgesIgnoringSafeArea(.top) // Ignore the top safe area
    // ...
}
0
Prajjwal Gupta On

Try this, this will work

let previewLayer = AVCaptureVideoPreviewLayer()

previewLayer.videoGravity = .resizeAspectFill