如题。我建的是一个windows的工程,在window里面加入tab bar controller。在其中一个tab里面放一个navigation controller,由这个navigationController调用一个viewcontroller,且该viewcontroller右上角有个按钮,点击按钮调用摄像头,但是下面的tabbar没有隐藏,因此默认的UIImagePickerController只能显示一部分,下面被tabbar给遮住了。我查了资料说hidesBottomBarWhenPushed=yes即可,但是我一直没成功,急啊,大家帮帮忙啊,谢谢了// self.hidesBottomBarWhenPushed=YES;
UIImagePickerController*picker = [[UIImagePickerControlleralloc] init];if([UIImagePickerControllerisSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
{
picker.sourceType= UIImagePickerControllerSourceTypeCamera;
NSArray *temp_MediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType];
picker.mediaTypes = temp_MediaTypes;
picker.delegate = self;
picker.allowsImageEditing = NO; 
}[picker viewWillAppear:NO];
[picker viewDidAppear:NO];
[picker viewDidAppear: YES];
[picker viewWillAppear: YES];[selfpresentModalViewController:picker animated:YES];
picker.hidesBottomBarWhenPushed=YES;
[picker release];
有人说加上
[picker viewWillAppear:NO];
[picker viewDidAppear:NO];
[picker viewDidAppear: YES];
[picker viewWillAppear: YES];
可以实现,但是我试过也不行。请大家帮帮忙,感激不尽呐!在cocoa里有人说:
如果这个view controller在一个navigation controller里, 在view controller被推入前, 设置它的hidesBottomBarWhenPushed为YES, 推入后tabBar会消失, 返回后tabBar会再次出现.如果不是, 想完美控制tabBar的消失/显现是相当麻烦的事.给你提供一个方案:
效果: tabBar向下滑动至消失; tabBar向上滑动至正常位置
实现原理: tabBar总显示在tabBarController.view的最下方. 因此, 修改tabBarController.view.frame, 使tabBarController.view.frame.size.height大于屏幕尺寸, tabBar就会滑出屏幕. 显现tabBar时, 将tabBarController.view.frame修改为屏幕尺寸, tabBar就会显示在正常位置.
注意: 不同方向上屏幕尺寸不同, 旋转屏幕时需重新调整布局.如果view controller中包含scrollView, 切换消失/显现时可能会出现莫名其妙的跳动.第一种办法我怎么试都试不成功,第二种办法我却不知道怎么调用tabBarController。我在viewcontroller里面添加appdelegate.h的头文件,然后这么调用:
//    WASDemoAppDelegate *appdelegate=[[WASDemoAppDelegate alloc] init];
//    [appdelegate.tabController.view.frame:CGRectMake(0, 0, 320, 1000)];但在[appdelegate.tabController.view.frame:CGRectMake(0, 0, 320, 1000)];这句中出错,我都不知道为什么会这样。。特此来万能的CSDN求救。。小弟新手,万望赐教。。

解决方案 »

  1.   

    你这么整不可能隐藏啊听我的,你在viewcontroller右上角有个按钮,点击按钮调用一个新的viewcontroller,然后在这个viewcontroller设置self.hidesBottomBarWhenPushed=YES;
    然后再显示一个默认的UIImagePickerController
      

  2.   

    hidesBottomBarWhenPushed 在 viewcontroller push到navigation controller之前设置
      

  3.   

     
    第一种,在按钮调用的方法内写:SecondViewController *sViewController = [[SecondViewController alloc] initWithNibName: nil bundle: nil];
    [sViewController setHidesBottomBarWhenPushed: YES];
    [self.navigationController pushViewController: sViewController animated: YES];
    [sViewController release];注:这里要转入的视图控制器用了SecondViewController 代替第二种,把这句  WASDemoAppDelegate *appdelegate=[[WASDemoAppDelegate alloc] init];  改成下面一句:
    WASDemoAppDelegate *appDelegate = (WASDemoAppDelegate*)[[UIApplication sharedApplication] delegate];楼主可以试试
      

  4.   


    感谢楼上几位大哥的回答!CSDN的网友就是热情!我经过一番的查找,找到了一种办法,实现了tabbar的隐藏。是层层向上获取到UITabbar这个控件。
        NSArray *windows=[[UIApplication sharedApplication] windows];
        [[[[[[windows objectAtIndex:0] subviews] objectAtIndex:2] subviews] objectAtIndex:1] setHidden:YES];
    但是这个并非是完全的隐藏,只是显示了一个白条郁闷啊。楼上几位大哥对于setHidesBottomBarWhenPushed的用法我都试过了,但都不行啊。。tabbar一点反应都没。。
    第二种办法我可以改变frame的大小了,我是这么写的:
        WASDemoAppDelegate *appDelegate = (WASDemoAppDelegate*)[[UIApplication sharedApplication] delegate];
        previosFrame=appDelegate.tabController.view.frame;
        CGRect tmp=CGRectMake(CGRectGetMinX(previosFrame), CGRectGetMinY(previosFrame), CGRectGetWidth(previosFrame), CGRectGetHeight(previosFrame)+60);
        appDelegate.tabController.view.frame=tmp;
    其中previosFrame是一个全局变量,用来保存原来的frame大小位置。这样可以隐藏tabbar,但是摄像头又怪怪的,往上面拖了一点,而且下面工具栏和摄像区域分开了
    摄像机调用完毕返回的时候我就这么写
        WASDemoAppDelegate *appDelegate = (WASDemoAppDelegate*)[[UIApplication sharedApplication] delegate];
        appDelegate.tabController.view.frame=previosFrame;
    更怪的情况出现了,几个tab都乱套了这个高一点,那个低一点。。
    我的天。。万能的主啊!!!救救我啊。
      

  5.   

    问题终于都解决了
    tabController.view的大小的话用的是bounds,
    然后同样的操作对navigationcontroller和viewcontroller操作,但是用的是frame。
    唉,新手就是这样子。。折腾无限。。谢谢大家的帮助。。欢迎大家继续给好的意见。
      

  6.   

    我这边TabBar和ToolBar混用也没有出现这种问题⋯⋯
    还是看看自己的逻辑吧,setHidesBottomBarWhenPushed肯定可以,记得最好放在要隐藏的页面的Init里面。
    这个是因为 NavigationController的栈结构所致,具体就不说了⋯⋯自己看Apple的类库说明吧。
      

  7.   

    tab bar controller -》presentModalViewController