已经创建了一个从相机捕获图像的应用程序。这是我的代码
-(IBAction) showCameraUI {
BOOL hasCamera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
UIImagePickerController* picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = hasCamera ? UIImagePickerControllerSourceTypeCamera : UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:picker animated:YES];
}
并实现此委托方法以获取捕获的图像
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissModalViewControllerAnimated:YES];
UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *yourImageView = image;
}
如果用户取消控制器
,则实施此方法- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker
{
[picker dismissModalViewControllerAnimated:YES];
}
但它显示了这个例外。有没有人知道为什么它在执行函数showCameraUI的最后一行后显示这样的异常。
此设备无法使用UIStatusBarStyleBlackTranslucent。 2013年2月7日 10:06:06.976 CaptureImage [460:c07] * 由于未捕获的异常而终止应用 'NSInvalidArgumentException',原因:'在iPad上,UIImagePickerController必须是 通过UIPopoverController'
呈现
答案 0 :(得分:1)
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:self.imgPicker animated:YES];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
[self.imgPicker dismissModalViewControllerAnimated:TRUE];
[self performSelectorInBackground:@selector(DoImageConversionInBackGround:) withObject:img ];
}
}
答案 1 :(得分:1)
请试试这个
//从相册中选择一张图片
- (IBAction)imageFromAlbum:(id)sender
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentViewController:imagePicker animated:YES completion:nil];
}
//用相机拍摄图像
- (IBAction)imageFromCamera:(id)sender
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
[self presentViewController:imagePicker animated:YES completion:nil];
}
// Dismiss the image picker on selection and use the resulting image in our ImageView
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:( UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
[imagePicker dismissModalViewControllerAnimated:YES];
[imageField setImage:image];
}
//取消时,仅解除选择器控制器
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[imagePicker dismissModalViewControllerAnimated:YES];
}