全屏 iPad UIPopoverController
Posted
技术标签:
【中文标题】全屏 iPad UIPopoverController【英文标题】:Fullscreen iPad UIPopoverController 【发布时间】:2011-10-11 08:47:55 【问题描述】:我有一个 iPad 应用程序,它通过 UIPopoverController
显示 UIImagePicker
。
我想让 popovercontroller 全屏(或至少尽可能大)。
我正在使用presentPopoverFromRect
方法和一个新的CGRect
,我已将其设置为各种宽度和高度,但没有任何结果。图像选择器的来源是UIImagePickerControllerSourceTypePhotoLibrary
。
UIPopoverController* popoverController = [[UIPopoverController alloc] initWithContentViewController:photoPicker];
popoverController.delegate = self;
popoverController presentPopoverFromRect:CGRectMake(0, 0, 2500, 2500) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
我什至可以全屏显示吗? sourcetype UIImagePickerControllerSourceTypeCamera
呢?
【问题讨论】:
【参考方案1】:要设置弹出框大小,您可以覆盖视图控制器中的-contentSizeForViewInPopover
,即
放置在popovercontroller中。
presentPopoverFromRect
用于定义将打开弹出框的框架,而不是用于设置其大小。
【讨论】:
那我需要扩展 UIImagePickerController 并在那里添加 -contentSizeForViewInPopover 方法吗?这是设置其大小的唯一方法吗?UIImagePickerController
继承自 UIViewController
所以它已经实现了-contentSizeForViewInPopover
。只需在加载到弹出控制器之前使用popoverController.contentSizeForViewInPopover = CGSizeMake(w,h);
【参考方案2】:
我刚刚验证此代码适用于 iPad 1 和 iPad 4(这意味着它在 ios 5.1.1 - 6.1.2 中受支持)
popover = [[UIPopoverController alloc] initWithContentViewController:yourVC];
[popover setPopoverContentSize:CGSizeMake(1024, 1024)];
[popover presentPopoverFromRect:CGRectZero
inView:appDelegate.splitViewController.view
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
您应该注意,弹出框很难消除,因为它会以纵向或横向“填满屏幕”。我的 appDelegate.splitViewController 中确实有这些方法:
- (BOOL)shouldAutomaticallyForwardRotationMethods
NSLog(@"MG - shouldAutomaticallyForwardRotationMethods");
return YES;
- (BOOL)automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers
NSLog(@"MG - automaticallyForwardAppearanceAndRotationMethodsToChildViewControllers");
return YES;
只需取消隐藏/隐藏您的 VC 角落中的按钮即可关闭:
[popover dismissPopoverAnimated:YES];
还应该注意,“popover”是一个强属性,否则当它尝试呈现时你会得到一个 deallocated 消息。
【讨论】:
【参考方案3】:您可能还想要一个 ModalViewController 代替?这个有 4 种不同的演示风格(其中一种是全屏)
一个很好的例子是这个问题中写的原型:presentModalViewController fullscreenmode issue (它在 //---EDIT---//)
看看它是否适合你。
【讨论】:
这不起作用。我一开始就是这样尝试的,直到出现异常:'在 iPad 上,UIImagePickerController 必须通过 UIPopoverController 呈现'以上是关于全屏 iPad UIPopoverController的主要内容,如果未能解决你的问题,请参考以下文章