全屏iPad UIPopoverController

时间:2011-10-11 08:47:56

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

我有一个iPad应用,通过UIImagePicker显示UIPopoverController。 我想让popovercontroller全屏(或者至少尽可能大)。

我正在使用presentPopoverFromRect方法和新的CGRect我已设置为各种宽度和高度而没有结果。 imagepicker的来源是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呢?

3 个答案:

答案 0 :(得分:1)

要设置弹出窗口大小,您可以在viewcontroller中覆盖-contentSizeForViewInPopover 放在popovercontroller。

presentPopoverFromRect用于定义弹出窗口的框架,而不是用于设置它的大小。

答案 1 :(得分:1)

我刚刚确认此代码适用于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;
}

只需取消隐藏/隐藏你角落中某个角落的按钮就可以解雇:

[popover dismissPopoverAnimated:YES];

还应该注意“popover”是一个强大的属性,或者当它试图呈现时你会得到一个解除分配的消息。

答案 2 :(得分:0)

你可能还想要一个ModalViewController吗?这个有4种不同的呈现方式(其中一个全屏)

一个很好的例子是这个问题写的原型:presentModalViewController fullscreenmode issue (它在// --- 编辑 --- //)

看看它是否适合你。