我目前正在尝试实现一个非常简单的UIView来替换UIImagePickerController,并且在捕获图像时遇到滞后。
以下是我目前使用的课程: https://gist.github.com/963319
当我调用snapPicture时,委托会立即从captureOutput:didOutputSampleBuffer获取具有正确尺寸的图像,但不显示图像至少3秒,有时需要5或10秒。我已经尝试添加委托setNeedsDisplay和setNeedsLayout。有谁知道我在这里做错了什么或者可能导致这种延迟的原因是什么?
答案 0 :(得分:1)
AVCaptureAudioDataOutput的文档说“在指定的调度队列中调用所有委托方法”,因此Alex下面的答案很好地表明了问题。
如果您执行此类操作而不是当前委托回调:
[委托performSelectorOnMainThread:@selector(usePicture :) withObject:image waitUntilDone:NO];
-usePicture:方法然后使用新图片调用委托。
适合我。虽然现在只在iPhone 4上测试过。
此致 埃德
答案 1 :(得分:0)
在camView中更新UI时切换到主线程/队列:didCaptureImage:?从主要线程以外的线程更新UI会导致问题。