我正在使用以下功能激活设备相机或图像选择器,具体取决于UIActionSheet的结果。如果fromCamera = YES则适用于iPhone和iPad。如果fromCamera = NO,那么它适用于iPhone并出现图像选择器。但它在iPad上崩溃时出现以下错误: UIStatusBarStyleBlackTranslucent在此设备上不可用。我已经知道iPad无法显示UIStatusBarStyleBlackTranslucent statusBar,但如何避免此崩溃?
-(void)addPhotoFromCamera:(BOOL)fromCamera{
if(fromCamera){
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
}
else{
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
[self presentModalViewController:picker animated:YES];
}
答案 0 :(得分:4)
如果您在iPad上将选择器设置为UIImagePickerControllerSourceTypePhotoLibrary,则必须(!)将其显示在popoverview中,否则您将获得例外。我这样做,至少控制弹出窗口的大小(标准尺寸在我看来太小):
-(void)openPhotoPicker
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.navigationBar.opaque = true;
//put the image picker in its own container controller, to control its size
UIViewController *containerController = [[UIViewController alloc] init];
containerController.contentSizeForViewInPopover = rightPane.frame.size;
[containerController.view addSubview:imagePicker.view];
//then, put the container controller in the popover
popover = [[UIPopoverController alloc] initWithContentViewController:containerController];
//Actually, I would like to do the following, but iOS doesn't let me:
//[rightPane addSubview:imagePicker.view];
//So, put the popover over my rightPane. You might want to change the parameters to suit your needs.
[popover presentPopoverFromRect:CGRectMake(0.0, 0.0, 10.0,0.0)
inView:rightPane
permittedArrowDirections:UIPopoverArrowDirectionLeft
animated:YES];
//There seems to be some nasty bug because of the added layer (the container controller), so you need to call this now and each time the view rotates (see below)
[imagePicker.view setFrame:containerController.view.frame];
}
我还有以下内容,以对抗轮换错误:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
if(imagePicker!=nil && rightPane.frame.size.width>0)
[imagePicker.view setFrame:imagePicker.view.superview.frame];
}
它并不完美,但目前我的测试目的还可以。我考虑编写自己的Imagepicker,因为我不喜欢被迫使用popoverview ......但是,这是一个不同的故事。
答案 1 :(得分:3)
我怀疑UIImagePicker是从Info.plist文件或当前显示的视图控制器继承半透明状态栏。
如果您使应用没有半透明状态栏会怎样?
答案 2 :(得分:0)