Имам приложение AV Foundation, което симулира правене на снимка (като приложението за камера). Обикновено следното работи за мен, но не е в този случай.
Този код се изпълнява в рамките на действие в моя контролер за изглед. Той съдържа един UIView на цял екран (videoPreviewLayer), който има прикачен AVCaptureVideoPreviewLayer. Анимацията се изпълнява, но нищо не се показва. Имайте предвид също, че използвам 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 секунди след като трябва да започне. Виждал съм също така да се изпълнява два пъти в бърза последователност, въпреки че извиквам кода веднъж.