我从苹果网站下载了AVCam演示版,并试图添加一个简单的启动画面(我添加了一个StartViewController。{h,m,nib}),然后启动了AVCam演示按钮。按钮的代码如下(其他一切只是xcode创建的默认内容):
-(IBAction) btnClicked:(id) sender {
viewController =
[[AVCamViewController alloc]
initWithNibName: @"AVCamViewController"
bundle:nil];
[UIView beginAnimations:@"flipping view" context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp
forView:self.view
cache:YES];
[self.view addSubview:viewController.view];
[UIView commitAnimations];
}
添加此笔尖后,拍摄照片并不是一直有效(有时相机胶卷中没有照片结束)。我在captureStillImageAsynchronouslyFromConnection:stillImageConnection completionHandler中向captureStillImage添加了一些日志语句,并注意到此completionHandler并不总是被调用。奇怪的是它确实在某些时候起作用。我的猜测是我做错了但不确定是什么?我正在运行4.2.1的iPhone上测试它。
答案 0 :(得分:2)
调用AVCaptureSession
captureStillImageAsynchronouslyFromConnection:stillImageConnection
正在运行
答案 1 :(得分:1)
好吧,我遇到了类似的问题,captureStillImageAsynchronouslyFromConnection:stillImageConnection
引发了一个异常,即传递的connection
无效。后来,我发现当我为会话properties
而stillImageOutPut
保留值时,问题就解决了。
答案 2 :(得分:0)
对我来说,这个问题只发生在单核iPhone 4上,当我尝试使用AVCaptureSessionPresetHigh拍摄静止图像时。
我尝试了AVCaptureSessionPresetPhoto,这个问题就消失了。但我不需要全尺寸照片,所以我选择了另一种解决方案。
我在主队列中放置了captureStillImageAsynchronouslyFromConnection。像这样的东西
dispatch_async(sessionQueue) {
// do whatever before capturing
dispatch_async(dispatch_get_main_queue) {
captureStillImageAsynchronouslyFromConnection {
// do whatever after capturing
}
}
}
不确定为什么会出现此问题,并且不确定为何可以避免此问题。但我希望这可以帮助别人。