使用 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 中显示视图控制器