問題
カメラのカスタムインターフェイスを作成するための参照として使用しているApple(SquareCam)のサンプルアプリケーションがあります。AVFoundationフレームワークを使用しています。Appleからプロジェクトをビルドして実行すると、アプリは期待どおりに実行されます。ただし、そのプロジェクトから同じコードを取得してXcodeの新しいプロジェクトに配置すると、ビデオプレビューが表示されません。
ビデオプレビューレイヤーを実行するために必要なコンポーネントまでコードを簡略化しました。繰り返しになりますが、このコードはApple(SquareCam)プロジェクトの場合と同じように正常に実行されますが、新しいプロジェクトでは表示されません。
コード
- (void)setupAVCapture {
NSError *error = nil;
AVCaptureSession *session = [AVCaptureSession new];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
[session setSessionPreset:AVCaptureSessionPreset640x480];
else
[session setSessionPreset:AVCaptureSessionPresetPhoto];
// Select a video device, make an input
AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:&error];
if ([session canAddInput:deviceInput])
[session addInput:deviceInput];
previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
[previewLayer setBackgroundColor:[[UIColor blackColor] CGColor]];
[previewLayer setVideoGravity:AVLayerVideoGravityResizeAspect];
CALayer *rootLayer = [previewView layer];
[rootLayer setMasksToBounds:YES];
[previewLayer setFrame:[rootLayer bounds]];
[rootLayer addSublayer:previewLayer];
[session startRunning];
}
- (void)viewDidLoad {
[super viewDidLoad];
[self setupAVCapture];
}
私は何を試しましたか?
すべてのコンセントを正しく設定しました。ビルドフェーズにすべてのフレームワークライブラリがあります。どちらのプロジェクトもストーリーボードを使用しています。奇妙なことに、私はカメラから画像をキャプチャし、ソースを前面から背面に切り替えることさえできます。ただし、プレビューは表示されません。AppleプロジェクトはARCでセットアップされていません。そこで、ARCを使用するようにプロジェクトを更新しました。繰り返しになりますが、Appleプロジェクトではうまく機能しますが、新しいプロジェクトではうまく機能しません。
考え?
問題が何であるかについてのアイデアはありますか?これを引き起こす可能性のあるプロジェクト設定はありますか?