ios 6 旋转后模态视图大小不正确

Posted

技术标签:

【中文标题】ios 6 旋转后模态视图大小不正确【英文标题】:ios 6 Incorrect modal view size after rotation 【发布时间】:2012-09-26 10:25:48 【问题描述】:

我们有一个 ipad 应用程序,它支持横向左右方向。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
    // Overriden to allow any orientation.
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);

我们通过调用将视图控制器显示为模态视图

childController.modalPresentationStyle = UIModalPresentationPageSheet;
    childController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[parentController presentViewController:childController animated:childController.animated completion:^
        childController->isBeingShowed = FALSE;

当我们显示一个模态视图时:RootViewController(FullScreen)->SelectOption(500, 500) 旋转工作正常,并且选择选项视图控制器具有它的原始大小。

当我们显示附加模态视图时:RootViewController(FullScreen)->SelectOption(500, 500)->Additional options(300, 300),旋转后 SelectOption 视图控制器大小变为全屏,而 AdditionalOptions 视图控制器保持其大小按照规定。

【问题讨论】:

您可以在***.com/questions/12554204/…找到答案 我在这里提出并回答了同样的问题:***.com/a/14989999/1742521希望对您有所帮助。 感谢您的链接,但这不是同一个问题。模态视图的方向会发生变化,但如果模态视图的父级具有相同的呈现样式,它将变为全屏 【参考方案1】:

小技巧解决了问题。

问题的根源是我将第一个模态视图打开为 PageSheet,当我从第一个模态视图打开第二个模态视图时,我得到了 MainView(FullScreen)、模态视图打开为页面表和第二个页面表从上一页表打开。这种架构导致了旋转问题。

技巧:现在我正在以 FormSheet 的形式打开第二个模态视图,并重新计算坐标以对应 PageSheet 坐标系。所以现在它看起来像这样 MainView->PageSheet->FormSheet 并且问题已解决。

抱歉,没有代码。

【讨论】:

以上是关于ios 6 旋转后模态视图大小不正确的主要内容,如果未能解决你的问题,请参考以下文章

模式视图在 ios 6.0 中调整大小,工具栏位于视图中间

iOS 6:旋转后忽略父模式的 modalPresentationStyle

在 iOS 7 中重新计算旋转时的子视图大小

iOS 无法在设备旋转时自动调整子视图大小

iOS 6 自定义分组 UITableViewCell 大小不正确

iOS8 - 在 UINavigationController 上推送 UIViewController 并旋转设备后,以前的视图控制器中的大小错误