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

tik*_*iko 6 objective-c ipad uipopovercontroller ios 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:^{
    }];
}
Run Code Online (Sandbox Code Playgroud)

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

小智 0

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