大家好我正在尝试制作相机应用。我这样做是为了
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
其中picker是UIimagepicker Controller的对象。
但是当运行代码时,应用程序终止显示错误。
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'源类型1不可用'
我在模拟器上使用它。我知道在模拟器中检查相机是不可能的,但我们可以测试一下。我认为这可能是因为相机不可用,这就是它终止的原因。 但我看到一个应用程序使用相同的代码但是在模拟器上运行,只显示了摄像头视图。 只是帮我解决这个问题。此外,如何将我的自定义视图添加到该应用程序中的相机?
答案 0 :(得分:21)
在设置sourcetype之前,您需要检查设备是否有可用的相机。
以下内容可以检查设备是否有可用的相机。
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
}
您无法从模拟器检查相机功能。您可以将UIImagePickerControllerSourceTypePhotoLibrary
指定为要在模拟器上测试的sourceType。
答案 1 :(得分:1)
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)
}
答案 2 :(得分:0)
将下面的代码置于例外情况下。记住你需要实现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];
}