Schnelle 180-Drehung des iOS-Geräts führt dazu, dass die Kamera verkehrt herum angezeigt wird.

Ich habe den folgenden Code implementiert, um die Ausrichtung eines @ zu änderAVCaptureVideoSession basierend auf demUIInterfaceOrientation:

- (AVCaptureVideoOrientation)interfaceOrientationToVideoOrientation:(UIInterfaceOrientation)orientation {
    switch (orientation) {
        case UIInterfaceOrientationPortrait:
            return AVCaptureVideoOrientationPortrait;
        case UIInterfaceOrientationPortraitUpsideDown:
            return AVCaptureVideoOrientationPortraitUpsideDown;
        case UIInterfaceOrientationLandscapeLeft:
            return AVCaptureVideoOrientationLandscapeLeft;
        case UIInterfaceOrientationLandscapeRight:
            return AVCaptureVideoOrientationLandscapeRight;
        default:
            break;
    }
    NSLog(@"Warning - Didn't recognise interface orientation (%ld)",(long)orientation);
    return AVCaptureVideoOrientationPortrait;
}

Dieser Code funktioniert fast perfekt. Ein Problem besteht jedoch darin, dass die Kamera verkehrt herum angezeigt wird, wenn Sie das iOS-Gerät schnell um 180 Grad drehen.

So sieht die Kameraansicht vor dem Drehen aus:

Und so sieht es nach der Drehung aus:

Zusätzlich ist hier meine Implementierung vonviewDidLayoutSubviews:

- (void)viewDidLayoutSubviews {

    [super viewDidLayoutSubviews];

    previewLayer.frame = self.view.bounds;

    self.view.translatesAutoresizingMaskIntoConstraints = NO;
    previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
    [self.view.layer addSublayer:previewLayer];

    if (previewLayer.connection.supportsVideoOrientation) {
        previewLayer.connection.videoOrientation = [self interfaceOrientationToVideoOrientation:[UIApplication sharedApplication].statusBarOrientation];
    }
}

Weiß jemand, warum die Kameraansicht bei dieser 180-Grad-Drehung verkehrt herum angezeigt wird?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage