子视图显示模式对话框显示后的混乱旋转状态

时间:2010-05-16 16:12:08

标签: iphone cocoa-touch rotation

我创建了一个模仿UISplitViewController的自定义UIViewController。它管理两个显示在左侧和右侧的子视图控制器。右侧身体区域,而在景观和隐藏左侧,以纵向显示在弹出窗口。它工作正常,使用didRotateFromInterfaceOrientation:和willRotateToInterfaceOrientation:消息来重置子视图的位置和大小。所有视图和子控制器都从一个笔尖加载。此自定义视图控制器显示在UINavigationController中。

其中一个子视图控制器使用presentModalViewController后出现问题。如果在初始化视图后旋转设备(但在显示模态控制器之前),则在取消模式对话框后,左侧和/或正文视图将以与模态对话框之前不同的旋转重新渲染改变了。

我想知道人们是否有类似的问题,解决方案是什么。我确信示例代码会有所帮助,但是需要大量工作才能将其提炼成可运行的样本。

2 个答案:

答案 0 :(得分:0)

是的,我有同样的问题,但找不到解决方案。我想到了几件事: 当方向更改以模态方式呈现每个子视图控制器时没有动画并立即解除。这有效,但我有问题一个接一个地显示2个viewcontrollers。此外,当以模态方式呈现视图控制器时,会对viewWillAppear等进行一些额外的调用,这可能会使应用程序无法预测。

另一个想法是添加到tabviewcontroller并以相同的方式呈现它。但这没效果。所以我采用了不向子viewcontroller呈现任何viewcontroller模态的解决方法。此外,self.interfaceorientation也不能被信任。

答案 1 :(得分:0)

当我在我的拆分视图应用程序中看到同样的行为时,我注意到只有当我在“左侧主页按钮”环境中按住设备时才会发生这种情况。我已将初始界面方向设置为“右主页按钮”,但允许左侧或右侧主页按钮横向方向(此应用程序没有纵向方向)。我的解决方案是不再支持左主页按钮横向方向,现在所有后模态子视图都可靠显示。