【问题标题】:Fullscreen iPad UIPopoverController全屏 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 呢?

【问题讨论】:

    标签: objective-c ios cocoa-touch ipad uipopovercontroller


    【解决方案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 呈现'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 2013-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2011-07-31
      • 2011-03-03
      相关资源
      最近更新 更多