AVFoundation を使用してビデオ カメラ UI を作成しています。含まれているビューコントローラーは、LandscapeRight 方向でのみ表示されます。プレビュー レイヤーを介して出力方向を変更すると、正しく表示されます。
self.previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
self.previewLayer.orientation = AVCaptureVideoOrientationLandscapeRight;
[self.displayContainer.layer addSublayer:self.previewLayer];
ただし、AVCaptureVideoPreviewLayer の方向プロパティは廃止され、AVCaptureConnection.videoOrientation が優先されることを認識しています。代わりにそれを使用する場合:
self.previewLayer.connection.videoOrientation = AVCaptureVideoOrientationLandscapeRight;
方向のさまざまなオプションを試しても、プレビューレイヤーは方向をまったく変更していないように見えます。これを推奨される方法で行うために、私が見逃している別のステップはありますか?
編集:
以下は、View Controller に存在する自動回転メソッドです。
-(BOOL)shouldAutorotate
{
return NO;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight;
}
解決:
これは、@ Spectravideo328 の回答のすべてのアドバイスを適用することと、displayContainer サブビューではなく ViewControllers ビュー レイヤーにプレビュー レイヤーを追加することの両方によって解決されます。