В iOS 8 у меня проблемы с захватом изображений с камеры, до сих пор я использую этот код для
UIImagePickerController *controller=[[UIImagePickerController alloc] init];
controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
controller.delegate=(id)self;
controller.sourceType=UIImagePickerControllerSourceTypeCamera;
[self presentViewController:controller animated:YES completion:nil];
Но в iOS 8 я получаю это:
Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates.
Я пытался с решением, предоставленным в этом сообщении с
@property (strong,nonatomic)UIImagePickerController *controller;
_controller=[[UIImagePickerController alloc] init];
_controller.videoQuality=UIImagePickerControllerQualityTypeMedium;
_controller.delegate=(id)self;
_controller.sourceType=UIImagePickerControllerSourceTypeCamera;
_[self presentViewController:controller animated:YES completion:nil];
и это
...
controller.modalPresentationStyle=UIModalPresentationFullScreen;
or
controller.modalPresentationStyle=UIModalPresentationCurrentContext;
...
и это
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self presentViewController:controller animated:YES completion:nil];
});
и это
[self presentViewController:controller animated:YES completion:NULL];
и это
[self presentViewController:controller animated:YES completion:^{
}];
любая идея?
objective-c
ios8
uiimagepickercontroller
souvickcse
источник
источник
dispatch_async(dispatch_get_main_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
То есть, мой код раньше был: который я изменилdispatch_async(dispatch_get_main_queue(), ^{
Ответы:
Я уверен, что это просто ошибка в iOS 8.0. Это воспроизводимо с простейшими приложениями POC, которые делают только попытку представить то,
UIImagePickerController
что вы делаете выше. Кроме того, насколько мне известно, нет альтернативы шаблону для выбора изображения / камеры. Вы даже можете загрузить пример приложения Apple с использованием UIImagePickerController , запустить его, и он выдаст ту же ошибку из коробки.Тем не менее, функциональность по-прежнему работает для меня. Помимо предупреждения / ошибки, у вас есть проблемы с функционированием вашего приложения?
источник
Я боролся с этой проблемой в течение нескольких часов, я прочитал все соответствующие темы и обнаружил, что ошибка была вызвана тем, что в настройках конфиденциальности моего устройства доступ камеры к моему приложению был заблокирован !!! Я никогда не отказывал в доступе к камере, и я не знаю, как она была заблокирована, но это была проблема!
источник
У меня недостаточно очков репутации, чтобы комментировать ответ @ greg выше, поэтому добавлю свои наблюдения здесь. У меня есть проект Swift для iPad и iPhone. У меня есть метод внутри моего основного контроллера вида (соответствующий бит ниже). Когда я проверяю это на телефоне, все работает правильно, и никаких предупреждений не генерируется. Когда я запускаю его на iPad, все работает правильно, но я вижу предупреждение о снимке экрана. Интересным моментом, однако, является то, что когда я работаю на iPad без использования контроллера popover, все работает правильно, без предупреждения. К сожалению, Apple требует, чтобы средство выбора изображений использовалось во всплывающем окне на iPad, если камера не используется.
источник
Я столкнулся с этим после вызова UIImagePickerController presentViewController: от обратного вызова до делегата UIAlertView. Я решил эту проблему, нажав presentViewController: отменить текущую трассировку выполнения с помощью dispatch_async.
источник
У меня была эта проблема при анимации некоторых видов, и приложение переходило в фоновый режим и возвращалось. Я справился с этим, установив флаг isActive. Я установил это в НЕТ в
и ДА в
и оживлять или не оживлять мои взгляды соответственно. Позаботился о проблеме.
источник
У меня было это с UIAlertControllerStyleActionSheet, дающим пользователю возможность сфотографироваться с камерой или использовать один из библиотеки.
Я попробовал символическую точку останова в сообщении об ошибке
Это показало мне, что ошибка вызвана внутренним использованием UICollectionView во время представления
Я исправил это, эксплицитно установив кадр перед представлением
Вот полный метод, который работает без ошибок
источник
Вы можете отключить предупреждение «Снимок представления», ссылаясь на
view
свойство перед представлением контроллера представления. Это приводит к загрузке представления и позволяет iOS визуализировать его перед созданием снимка.источник
cameraOverlayView
, к сожалению, я все еще получаю эту проблему, даже когда я применяю этот совет.Для тех, кто видит проблему с черным предварительным просмотром после захвата изображения, скрытие строки состояния после отображения UIPickerController, похоже, решает проблему.
источник
Я нашел ту же проблему и попробовал все. У меня есть два разных приложения, одно в Objective-C и одно в быстром - оба имеют одинаковую проблему. Сообщение об ошибке появляется в отладчике, и экран становится черным после первой фотографии. Это происходит только в iOS> = 8.0, очевидно, это ошибка.
Я нашел трудный обходной путь. Отключите элементы управления камерой с помощью imagePicker.showsCameraControls = false и создайте собственный вид наложения, в котором отсутствуют кнопки. Существуют различные учебные пособия о том, как это сделать. Странное сообщение об ошибке остается, но по крайней мере экран не гаснет, и у вас есть работающее приложение.
источник
Это может быть ошибка встроенного ImagePickerController. Мой код работает, но иногда вылетает на iPhone 6 Plus.
Я перепробовал все решения, предложенные другими ответами, но безуспешно. Проблема окончательно решена после перехода на JPSImagePickerController .
источник
Я перепробовал все, моя проблема заключалась в том, что средство выбора изображений для камеры и библиотеки фотографий исчезло сразу после их показа. Я решил это следующей строкой (swift)
источник
Я уверен, что это просто ошибка в iOS 8.0. Его можно воспроизвести с помощью самых простых приложений POC, которые не делают ничего, кроме попытки представить UIImagePickerController, как вы делали выше. Кроме того, насколько мне известно, нет альтернативы шаблону для выбора изображения / камеры. Вы даже можете загрузить пример приложения Apple с использованием UIImagePickerController, запустить его, и он выдаст ту же ошибку из коробки.
Тем не менее, функциональность по-прежнему работает для меня. Помимо предупреждения / ошибки, у вас есть проблемы с функционированием вашего приложения?
источник
Если мы используем
UIImagePickerController
свойство as, то это предупреждение исчезнет.XcodeПредположим, что мы не используем результат изUIImagePickerController
, если мы создаем экземплярUIImagePickerController
внутри функции.источник
Вызов этого метода работал для меня. Поместите это после представления своего взгляда.
источник
Я также столкнулся с той же проблемой и решил ее, проверив, доступна ли камера:
источник
Я сталкивался с этой проблемой. Когда мы вызываем камеру и отпускаем взгляды, возникает эта проблема. Для примера, вызов камеры и установка view nil в методе viewDidDisappear эта ошибка произойдет, так как нет обратного вызова для события камеры. Убедитесь в этом случае тоже для этой ошибки.
источник
Я получил ту же ошибку, получив сообщение ниже в консоли при открытии камеры.
'Снимок представления, который не был обработан, приводит к пустому снимку. Убедитесь, что ваш вид был обработан хотя бы один раз перед снимком или снимком экрана после обновления экрана. '
Для меня проблема была с отображаемым именем Bundle в Info.plist file.it был каким-то образом пустым, я поместил туда имя моего приложения, и теперь оно работает нормально. Я не получил никакого предупреждения о разрешении камеры из-за пустого отображаемого имени Bundle.it заблокировал вид от рендеринга.
проблема была не в просмотре, а в представлении без разрешения. Вы можете проверить это в настройках -> конфиденциальность -> Камера, если ваше приложение не указано в списке, проблема может быть такой же.
источник
Я использую Phonegap, но эта тема продолжает появляться первой, когда Google указывает на сообщение об ошибке.
Для меня эта проблема ушла, определив тип изображения в PNG.
Таким образом, вся линия была:
Ваш пробег может варьироваться, но это помогло мне.
источник
В качестве альтернативы рассмотрите возможность использования
drawViewHierarchyInRect
:Swift:
Objective-C:
Также см:
источник
В моем случае (XCode 7 и iOS 9) я использую
UINavigationController
«скрытый», так что я должен добавить,UINavigationControllerDelegate
чтобы представить камеру или ролл, и она работает так, как и должно!And pickerControllerDelegate.self
ошибка тоже не отображается!источник