Uiimagepicker Для показа камеры

Привет всем, я пытаюсь сделать приложение для камеры. Я делаю это как

picker.sourceType = UIImagePickerControllerSourceTypeCamera;

где сборщик является объектом контроллера UIimagepicker.

Но когда запускается код, приложение прекращает показ ошибки.

Завершение приложения из-за неотображенного исключения "NSInvalidArgumentException", причина: "Тип источника 1 недоступен"

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

Ответ 1

Вам нужно проверить, есть ли у камеры камера, прежде чем устанавливать тип sourcetype.

Ниже можно проверить, есть ли у камеры доступная камера.

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])  {
}

Вы не можете проверить функциональность камеры с вашего симулятора. Вы можете назначить UIImagePickerControllerSourceTypePhotoLibrary как testType для тестирования на симуляторе.

Ответ 2

Swift 2.2

if UIImagePickerController.isSourceTypeAvailable(.Camera) {
  imagePicker.delegate = self
  imagePicker.sourceType = .Camera
  presentViewController(imagePicker, animated: true, completion: nil)
} else {
  print("The device has no camera")
}

Альбом сохраненных фотографий

if UIImagePickerController.isSourceTypeAvailable(.SavedPhotosAlbum) {
  imagePicker.delegate = self
  imagePicker.sourceType = .SavedPhotosAlbum
  imagePicker.allowsEditing = false
  self.presentViewController(imagePicker, animated: true, completion: nil)
}

Ответ 3

Введите ниже код, в котором происходит исключение. Помните, что вам нужно реализовать navigationController

 if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
            UIAlertController *alertView = [UIAlertController alertControllerWithTitle:@"ERROR" message:@"No Camera Avalible" preferredStyle:UIAlertControllerStyleAlert];

        UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) {
            [self dismissViewControllerAnimated:alertView completion:nil];
        }];
        [alertView addAction:ok];
        [self.navigationController presentViewController:alertView animated:YES completion:nil];
    }