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?