我有一个 iPhone 应用程序,它使用导航控制器来显示顶栏(带有标题和后退按钮,等等......)。
我UITabBar
在应用程序窗口中添加了一个,可以在它的各个部分之间切换。我没有将标签栏添加到 ViewController 的每个视图中,而是将标签栏添加到应用程序窗口中。
(当我在 ViewController 中使用它时,控制器之间的切换使标签栏向左/向右滑动,当动画弹出/推送发生时,以及整个视图)。
因此,我添加了UITabBar
,MainWindow.xib
并将其绑定到应用程序委托的变量。在我的didFinishLaunchingWithOptions
方法中,我添加了以下代码:
[self.window addSubview:navigationController.view];
CGRect frame = navigationController.view.frame;
frame.size.height -= tabbar.frame.size.height;
navigationController.view.frame = frame;
tabbar.selectedItem = [tabbar.items objectAtIndex:0];
调整主(navigationController
's)视图的大小,以使 TabBar 可见。
当我旋转设备时,问题就出现了——我的视图被拉伸到全窗口并且我失去了显示 TabBar 的能力。
我在 ViewController 中添加了一个- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation
方法,代码如下:
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
CGRect frame = self.view.frame;
frame.size.height -= [AppState shared].tabBar.frame.size.height;
//frame.origin.y = [AppState shared].tabBar.frame.size.height;
//frame.origin.x = 100;
self.view.frame = frame;
frame = [AppState shared].tabBar.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.origin.y - frame.size.height;
[AppState shared].tabBar.frame = frame;
}
它调整视图的大小,并将标签栏移动到视图的上/下部分(我在这里只允许纵向/纵向倒置方向)。问题是,我的 TabBar 也颠倒了,而且它不再可点击。
如下图所示:
有谁知道如何处理这种情况?或者,如何让标签栏不绑定到视图控制器,同时又能流畅地处理界面的旋转?