Aru*_*run 11 iphone objective-c ipad ios ios6
我已经从相机创建了一个捕获图像的应用程序.这是我的代码
-(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];
}
Run Code Online (Sandbox Code Playgroud)
并实现了这种委托方法来获取捕获的图像
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[picker dismissModalViewControllerAnimated:YES];
UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
UIImage *yourImageView = image;
}
Run Code Online (Sandbox Code Playgroud)
如果用户取消控制器,则实现此方法
- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker
{
[picker dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
但它显示了这个例外.有没有人知道为什么它在执行函数showCameraUI的最后一行后显示这样的异常.
UIStatusBarStyleBlackTranslucent is not available on this device. 2013-02-07
10:06:06.976 CaptureImage[460:c07] *** Terminating app due to uncaught exception
'NSInvalidArgumentException', reason: 'On iPad, UIImagePickerController must be
presented via UIPopoverController'
Run Code Online (Sandbox Code Playgroud)
iDe*_*Dev 14
关于异常,错误消息非常清楚."在iPad上,必须通过UIPopoverController呈现UIImagePickerController"对于iPad,您应该将其呈现在一个UIPopoverController而不是使用它[self presentModalViewController:picker animated:YES];.这应该解决问题.
例如: -
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker];
[popover presentPopoverFromRect:self.view.bounds inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
self.popover = popover;
} else {
[self presentModalViewController:picker animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
编辑:正如@rmaddy所提到的,相机可以模态呈现.以上是适用sourceType的UIImagePickerControllerSourceTypePhotoLibrary.
@Arun我也面临同样的问题在头文件中添加全局属性.
我希望下面的代码对你有用
UIImagePickerController *imgPicker = [[UIImagePickerController alloc] init];
[imgPicker setDelegate:self];
[imgPicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[imgPicker setAllowsEditing:YES];
[imgPicker setModalPresentationStyle:UIModalPresentationCurrentContext];
UIPopoverController *popOver = [[UIPopoverController alloc] initWithContentViewController:imgPicker];
popOver.delegate = self;
self.popoverImageViewController = popOver;
[self.popoverImageViewController presentPopoverFromRect:CGRectMake(0, 0, 160, 40) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
Run Code Online (Sandbox Code Playgroud)
在该头文件中创建这样的全局属性
@property (strong) UIPopoverController *popoverImageViewController;
Run Code Online (Sandbox Code Playgroud)