在关闭全屏模式时,不会调用viewWillLayoutSubviews方法

时间:2012-06-07 06:12:10

标签: ios ipad uikit

我正在尝试追踪在使用 -

显示控制器后不会调用viewWillLayoutSubviews(和viewDidLayoutSubviews)方法的问题
[self presentModalViewController:controller animated:YES];

并解雇

[self dismissModalViewControllerAnimated:YES];. 

此视图控制器显示在UISplitViewController的顶部,作为在详细信息区域中按下按钮的结果。当我旋转设备时,如果没有模态,我会得到viewWillLayoutSubviews回调。但问题是,当我在模型呈现期间旋转时,它不会正确更新视图并在解除视图边界后重新计算视图边界。根据IOS 5发行说明,我在解雇模态视图控制器后应该得到viewDidLayoutSubviews

为了进行比较,我创建了一个没有其他代码的裸骨应用程序,它按照文档记录工作,在模式解除后会调用viewWillLayoutSubviews

我一直在翻看我的真实应用代码,但找不到任何错误。我正在寻找有关帮助解决这个问题的建议。旋转时为什么回调会起作用,而当模态被解除时回调不起作用?它可能是我的视图层次结构吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

尝试使用委托方法viewWillAppear代替viewWillLayoutSubviews。 WillLayoutSubviews仅在视图边界发生变化时调用(旋转设备时会发生这种情况)。