我有一个模拟拍照的 AV Foundation 应用程序(如相机应用程序)。通常以下内容对我有用,但在这种情况下不是。
这段代码在我的视图控制器的一个动作中执行。它包含一个附加了 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 秒变得可见。即使我调用了一次代码,我也看到它快速连续运行两次。