7

我有一个非常简单的问题,但答案并不那么容易。

当我的方向改变时,我想隐藏一个 UITabBar。

我看了两种方式:

框架方式

myAppDelegate.tabBarController.tabBar.frame = CGRectMake(<<bottomOfScreen>>);

工作正常,但我有一个空白区域,所以尝试使用 tabBarController.view.frame et myViewController.view.frame 但我没有得到任何好的结果。

导航控制器方式

myOtherVC.hideTabBarWhenPushed = YES;
[self.navigationController pushViewController:myOtherVC animated:NO];

工作,但不是我的应用程序的好解决方案

更新:

[appDelegate.tabBarController.view removeFromSuperview];
[self.view removeFromSuperview]; [appDelegate.window addSubview:self.view];
self.view.frame = CGRectMake(0,0,480,320);

工作正常,但不再自动旋转(当然,我没有更改 shouldAutorotate 并且它总是返回 YES)


如何隐藏我的 tabBar 并使当前视图占据它的空间?


谢谢

4

2 回答 2

3

您可以结合使用当前解决方案:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

检测旋转。(我认为您将其与 view.transform = CGAffineTransformMakeRotation 结合以使其旋转...?)

于 2009-07-20T19:24:56.617 回答
0

我认为您可以轻松做到这一点的两种方法是:

  1. 将对象重新加载回 tabBar 控制器 - 对于要隐藏的 viewController,将 hidesBottomBarWhenPushed 设置为 YES。
  2. 另一种选择是让您的视图在手机旋转时成为窗口的唯一视图,然后在手机旋转回来时将 tabBarController.view 放回窗口中

希望这可以帮助

于 2009-06-24T09:36:41.150 回答