我的应用程序有一个包含导航控制器的选项卡栏。
当我旋转到横向时,我通过将横向视图推送到导航控制器堆栈来切换到不同的视图,如下所示:
- (void) orientationDidChange: (NSNotification *) notification {
if (self.tabBarController.selectedViewController == self.navigationController) {
if (self.navigationController.topViewController == self &&
[[notification name] isEqualToString: kOrientationLandscape]) {
[self.navigationController pushViewController: landscapeViewController animated: NO];
}
if (self.navigationController.topViewController != self &&
[[notification name] isEqualToString: kOrientationPortrait]) {
[self.navigationController popViewControllerAnimated: NO];
}
}
}
这很好用,但是当我旋转回纵向时,视图会正确显示,然后根据我猜测的导航栏的高度“跳跃”。然后视图的顶部隐藏在导航栏后面。
如果我以通常的方式将另一个控制器推到顶部,然后弹回它正确显示的纵向视图 - 这仅在从横向旋转回来时发生。
此外,它在模拟器中运行良好,但在 iPhone 上却不行。我正在为 2.0 构建,但对于以后的版本似乎也是一样的。
有任何想法吗?
干杯灰