这是问题所在 . 我有以下视图层次结构,使用翻转动画以模态方式推送:

  • BackViewController

  • UITabBarController

  • UINavigationController

  • ForecastListViewController

它看起来像这样:

enter image description here

以下是iOS 4.3中翻转期间的调用顺序:

  • BackViewController viewDidLoad

  • ForecastListViewController viewDidLoad

  • BackViewController viewWillAppear

  • ForecastListViewController viewWillAppear

  • BackViewController viewDidAppear

  • ForecastListViewController viewDidAppear

在iOS 5.0中,顺序不同(步骤2和3切换):

  • BackViewController viewDidLoad

  • BackViewController viewWillAppear

  • ForecastListViewController viewDidLoad

  • ForecastListViewController viewWillAppear

  • BackViewController viewDidAppear

  • ForecastListViewController viewDidAppear

问题是,现在导航栏的顶部在翻转动画期间在状态栏的底部下方显示10个像素,然后在动画终止后快速回到其预期位置 .

我试过更改ForecastListViewController viewDidLoad方法中的导航栏框架但没有成功:没有任何反应 .

如果我强制加载ForecastListViewController,那么它就像步骤2一样(通过在调查此问题的同时强制遍历层次结构),一切都很好 . 但我正在寻找一个好的解决方案,而不是这个“黑客” .

有这个问题的人吗?任何线索或指针?我对如何优雅地解决这个问题感到茫然