2012-05-17 4 views
6

Я использую UIImagePickerController, чтобы сделать снимок. Я использую следующий код:UIImagePickerController дает мне черный предварительный просмотр

UIImagePickerController* UIPicker = [[UIImagePickerController alloc] init]; 
UIPicker.delegate = self; 
UIPicker.sourceType= UIImagePickerControllerSourceTypeCamera; 
[UIPicker setCameraCaptureMode:UIImagePickerControllerCameraCaptureModePhoto]; 
UIPicker.allowsEditing=NO; 
[self presentModalViewController:UIPicker animated:YES]; 
[UIPicker release]; 

Проблема заключается в том, что случайно я получаю предварительный просмотр как черный экран, если это происходит один раз, то он никогда не восстанавливает, пока мы не убить и перезапустить приложение.

Я получаю правильное изображение от UIImagePickerControllerDelegate, но у меня есть эта проблема с предварительным просмотром, когда UIImagePickerController имеет камеру как источник.

ответ

0

Если это случайный случай, я сомневаюсь, что это проблема с памятью. Изображение от UIImagePickerController довольно большое. Если вам удастся каким-то образом манипулировать изображением, ваша память, возможно, не сможет этого поддержать.

0

Я столкнулся с этой же проблемой с предварительным просмотром камеры сегодня, и основной причиной проблемы был ... полностью несвязанный код в делегате приложения, который изменил интерфейс в фоновом режиме.

По-видимому, для устранения неустойчивых внутренних переменных, на которые опирается AVFoundation, не требуется много усилий.

Как только я устранил вызовы кода пользовательского интерфейса из фоновых очередей, предварительный просмотр камеры стал быстрым и надежным.

Эта статья (http://www.cocoanetics.com/2013/02/uiview-background-queue-debugging/) была очень полезной при отслеживании, где пользовательский интерфейс был изменен из фоновой очереди.

Я также рекомендую вам проверить ответ на этот вопрос (iOS 7 UIImagePickerController has black preview)