当纵向锁定容器视图控制器以模态方式呈现横向锁定视图控制器时,视图控制器随后将错误地布局,直到应用程序启动,从而导致严重的可用性问题 .

显示此问题的示例项目也可在https://github.com/eric-horacek/iOS8-Rotation-Presentation-Bug获取

重现步骤:

  • 创建一个窗口

  • 创建一个锁定为纵向的容器视图控制器

  • 使用视图控制器包含方法将子视图控制器添加到自定义容器视图控制器

  • 将容器视图控制器设置为窗口上的根视图控制器

  • 以模态方式呈现视图控制器,该视图控制器已锁定到仅横向方向

预期成果:

模态视图控制器以横向方向呈现并占据整个屏幕 . 当被解雇时,方向返回到肖像 .

实际结果:

呈现模态视图控制器,但仍以纵向方向布局,剪切呈现的视图控制器的内容 . 应用程序状态栏正确旋转到横向,但模态呈现的视图控制器的内容保持纵向,从屏幕底部剪切 . 当视图控制器被解除时,呈现视图控制器将以横向方向布局,尽管设备正确地重新定向回到肖像 . 这导致呈现视图控制器的内容也被剪裁 . 在重新启动应用程序之前,无法修复此问题 .

注意:

如果父视图控制器是导航控制器(不使用自定义视图控制器包含),则它可以按预期工作,不会出现布局问题 . 但是,使用自定义容器视图控制器时问题仍然存在 .

有任何想法吗?