使用 UIPopoverController 显示的 UIViewController 的 Size-Class 错误

Posted

技术标签:

【中文标题】使用 UIPopoverController 显示的 UIViewController 的 Size-Class 错误【英文标题】:Wrong Size-Class of UIViewController shown with UIPopoverController 【发布时间】:2015-03-17 16:51:34 【问题描述】:

我正在开发带有通用情节提要的通用 iPhone/iPad 应用程序。对于某些 ViewController,如果它们在 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 的情节提要上做了一些更改,但在 iPad 上的 UIPopoverController 仍然显示 iPhone 布局。这是因为弹出框的大小低于 iPad 屏幕。我可以在带有 Size Classes 的 Interface Builder 中进行更改,以在 iPad 上的弹出窗口中显示它们,但在 iPhone 上忽略它们吗?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于使用 UIPopoverController 显示的 UIViewController 的 Size-Class 错误的主要内容,如果未能解决你的问题,请参考以下文章

UIPopoverController 中的 UIScrollView

UIPopoverController backgroundColor 在显示时导致闪烁

无法在 UIPopoverController 中显示视图控制器

iPad开发中UIPopoverController的使用

使用 UIPopoverController 显示的 UIViewController 的 Size-Class 错误

iPad 控件UIPopoverController使用