AVCaptureVideoPreviewLayer (camera.app など) の回転をロックするための果てしない探求の中で、VC コンテインメントを試すことにしました。
私の考えでは、AVCaptureVideoPreviewLayer コードを別の VC に配置し、その回転を無効にすると、背景レイヤー (拡張現実アプリ) としてロックされた「ビュー」を持つことができるはずです。
しかし、これを実行しようとすると、AVCaptureVideoPreviewLayer がまったく機能せず、カメラ ビデオが表示されません。
以下は私のセットアップです。
ViewController.mで:
@property (nonatomic, strong, readwrite) cameraViewController *cameraVC;
-(void) viewDidAppear:(BOOL)animated
{
self.cameraVC = [self.storyboard instantiateViewControllerWithIdentifier:@"cameraVC"];
[self addChildViewController:self.cameraVC];
[self.view addSubview:self.cameraVC.view];
cameraViewController.mで:
-(void) viewDidAppear:(BOOL)animated
{
NSLog(@"cameraViewController : viewDidAppear");
self.captureManager = [[CaptureSessionManager alloc] init];
[self.captureManager addVideoInput];
[self.captureManager addVideoPreviewLayer];
CGRect layerRect = self.cameraView.bounds;
[[self.captureManager previewLayer] setBounds:layerRect];
[[self.captureManager previewLayer] setPosition:CGPointMake(CGRectGetMidX(layerRect), CGRectGetMidY(layerRect))];
[self.cameraView.layer addSublayer:self.captureManager.previewLayer];
[[self.captureManager captureSession] startRunning];
}
しかし、cameraViewController.mをストーリーボードで最初に自動的にロードされるルート コントローラーに設定すると、カメラ ビデオ (AVCaptureVideoPreviewLayer) は正常に動作します。(マイナス回転の煩わしさ)
子 VC ではなくルート VC として機能するのはなぜですか?
[XCode 4.5、iOS 6.0、およびストーリーボードを使用しています。]