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:旋转后忽略父模式的 modalPresentationStyle
iOS 6 自定义分组 UITableViewCell 大小不正确
iOS8 - 在 UINavigationController 上推送 UIViewController 并旋转设备后,以前的视图控制器中的大小错误