I ' Мы реализовали камеру с использованием инфраструктуры AVFoundation, представленной в iOS 4 и 5, но столкнулись с несовместимой проблемой с функцией captureStillImageAsynchronouslyFromConnection: completionHandler:
, при которой блок обработчика завершения никогда не вызывается. В этой ситуации звук срабатывания затвора не срабатывает, и предварительный просмотр останавливается.
Я следил как за руководствами Apple (видео WWDC 2010 и 2011), так и за руководствами сторонних разработчиков (блог и сообщения SO), чтобы реализовать захват неподвижных изображений с разрешением «Фото» практически без каких-либо улучшений. Мне удалось воспроизвести несколько стабильно в следующих условиях :
AVCaptureFlashModeAuto
и сделал снимок при слабом освещении, он зависает и никогда не запускает завершение блокировать. Вспышка срабатывает, но звука срабатывания затвора нет. С помощью того же кода я могу сделать снимок при нормальном освещении, когда срабатывает звук срабатывания затвора, вспышка не работает и выполняется блок завершения. flashMode
или отключу его, я могу сделать несколько фотографий, но после небольшого числа (обычно от 1 до 5) блок завершения перестает срабатывать.Для пояснения, сценарий может быть следующим:
Моя реализация
У меня интерфейс обрабатывается в ViewController и отдельный класс для обработки всего материала AVFoundation. Переменная экземпляра отдельного класса, который обрабатывает материал AVFoundation, находится в ViewController. Он отличается от примеров реализации, но я не понимаю, почему он должен вызывать такие случайные ошибки.
Дополнительные наблюдения
[stillImageOutput isCapturingStillImage]
он будет продолжать возвращать false и продолжать выполнение функции captureStillImageAsynchronouslyFromConnection
Я хотел бы знать, есть ли что-то, чего я могу упустить, свойство не настроено или известная проблема с обходным решением.
Спасибо.
(Я видел похожий пост, но ни один из ответов не решил мою проблему. Мне нужны фото в приложении.Для справки: iPhone SDK 4 AVFoundation - Как правильно использовать captureStillImageAsynchronouslyFromConnection? )