写真の撮影をシミュレートするAVFoundationアプリ(カメラアプリなど)があります。通常、以下は私にとってはうまくいきますが、この場合はそうではありません。
このコードは、ViewControllerのアクション内で実行されます。これには、AVCaptureVideoPreviewLayerがアタッチされた単一のフルスクリーンUIView(videoPreviewLayer)が含まれています。アニメーションは実行されますが、何も表示されません。ARC、iOS 6、iPhone 4S、iPad3を使用していることにも注意してください。
// Flash the screen white and fade it out
UIView *flashView = [[UIView alloc] initWithFrame:[[self videoPreviewView] frame]];
[flashView setBackgroundColor:[UIColor whiteColor]];
[[[self view] window] addSubview:flashView];
[UIView animateWithDuration:1.f
animations:^{
[flashView setAlpha:0.f];
}
completion:^(BOOL finished){
[flashView removeFromSuperview];
}
];
AVCaptureVideoPreviewLayerをアタッチする方法は次のとおりです。
// Setup our preview layer so that we can display video from the camera
captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:self.captureSession];
CALayer *viewLayer = videoPreviewView.layer;
viewLayer.masksToBounds = YES;
captureVideoPreviewLayer.frame = videoPreviewView.bounds;
[viewLayer insertSublayer:captureVideoPreviewLayer below:[[viewLayer sublayers] objectAtIndex:0]];
注さらに調査したところ、断続的ではありますがフラッシュが発生しています。通常、起動してから約5〜10秒後に表示されるようです。また、コードを1回呼び出しても、2回連続して実行されることも確認しました。