为什么在旋转模态呈现的子视图控制器时我的约束不起作用?

时间:2016-01-20 07:12:09

标签: ios cocoa-touch uiviewcontroller autolayout

这是我在iOS 8中的设置:我有一个根视图控制器,它提供了模态子视图控制器。我为父级和子级VC启用了自动布局,并在一个故事板中精心设计了约束。虽然我的约束可以很好地在父级和子级中布局我的视图,但是当我旋转设备时它们不会在模态子项中重新定位视图(视图卡在预旋转大小中)! 我已经追了几个红色的鲱鱼,就像认为旋转事件没有从父母传给孩子一样,但事实并非如此(NSLogviewWillTransitionToSize:size withTransitionCoordinator:coordinator中在父母和孩子都被调用)。 任何人都可以让我解开吗?谢谢!

更新: 我找到了答案,但我想提供有关情况的更多细节: 我希望呈现视图控制器通过我所呈现的视图控制器中的任何透明视图显示,因此我将模态呈现样式设置为UIModalPresentationCustom

1 个答案:

答案 0 :(得分:3)

好。我终于找到了解决方案: - 首先我注意到我提出的一个视图控制器正在按预期工作(自动旋转会调整视图大小,自动布局会完成它的工作)。 - 看看差异,我注意到唯一显着的区别是演示风格:工作VC呈现UIModalPresentationFullScreen风格。 - 在我的其他情况下,我尝试将演示文稿样式更改为全屏,并且确实,自动布局按预期工作,只有问题,呈现视图控制器不再出现在我的模型VC的透明部分后面。 - 使用不同的演示风格,我发现做我想要的风格是UIModalPresentationOverFullScreen。它与全屏相同,但在显示的后面显示了呈现视图控制器!

我仍然不确定为什么会这样(无法找到描述此特定问题的文档,如果有人知道,请分享!),但我感到困惑的是这种演示风格({ {1}})是在iOS 8.0中创建的,这意味着我只是不知道我将如何在iOS< 8.0 ...