全屏 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的主要内容,如果未能解决你的问题,请参考以下文章

iOS-iPad 旧iPad项目不能全屏运行,两边留有黑边

ipad微信小程序全屏设置

ipad 1 视频镜像全屏

iPad 应用程序未使用全屏

ipad浏览器全屏隐藏状态栏

全屏 iPad UIPopoverController