在我对锁定 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 和故事板。]