使用UIPopoverController显示的UIViewController错误的大小类

时间:2015-01-19 16:03:32

标签: ios objective-c ipad uipopovercontroller size-classes

我正在开发具有通用故事板的通用iPhone / iPad应用程序。对于一些ViewControllers,如果他们在iPad上有一些特定的布局,我会使用大小类。

我有一个ViewController需要在iPhone上以模态方式呈现,但在iPad上它需要在UIPopoverController中显示。

UINavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"ComposeMessageNavigationController"];
ComposeMessageViewController *viewController = (ComposeMessageViewController *)navigationController.topViewController;
//Prepeare my view controlller
...

if (IS_IPAD) {
    UIPopoverController * popover = [[UIPopoverController alloc] initWithContentViewController:navigationController];
    CGSize screenSize = [UIScreen mainScreen].bounds.size;
    CGRect popoverFrame = CGRectMake(screenSize.width / 2, screenSize.height / 2, 1, 1);
    [popover presentPopoverFromRect:popoverFrame inView:self.view permittedArrowDirections:0 animated:YES];
} else {
    [self presentViewController:navigationController animated:YES completion:^{
    }];
}

它工作得很好但是大小类有问题。我在wRegular / hRegular Size Class的故事板上进行了一些更改,但在UIPopoverController的iPad上仍然显示了iPhone布局。这是因为popover的大小比iPad屏幕要低。我可以在Interface Builder中使用Size Classes进行更改,以便在iPad上使用popover显示它们但在iPhone上忽略吗?

1 个答案:

答案 0 :(得分:0)

在弹出窗口视图控制器上使用setOverrideTraitCollection应允许您使用常规x常规iPad。