UIImagePickerController隐藏tabbar

iOS 码拜 9年前 (2015-05-05) 852次浏览 0个评论
 

如题。我建的是一个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求救。。小弟新手,万望赐教。。

UIImagePickerController隐藏tabbar
20分
你这么整不可能隐藏啊

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

UIImagePickerController隐藏tabbar
20分
hidesBottomBarWhenPushed 在 viewcontroller push到navigation controller之前设置
UIImagePickerController隐藏tabbar
20分
 
第一种,在按钮调用的方法内写:

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];

楼主可以试试

UIImagePickerController隐藏tabbar
引用 3 楼 ceewn 的回复:

第一种,在按钮调用的方法内写:

SecondViewController *sViewController = [[SecondViewController alloc] initWithNibName: nil bundle: nil];
[sViewController setHidesBottomBarWhenPushed: YES];
[self.navigationContro……

感谢楼上几位大哥的回答!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都乱套了。。。这个高一点,那个低一点。。
我的天。。

万能的主啊!救救我啊。。。。

UIImagePickerController隐藏tabbar
问题终于都解决了。。。
tabController.view的大小的话用的是bounds,
然后同样的操作对navigationcontroller和viewcontroller操作,但是用的是frame。

唉,新手就是这样子。。折腾无限。。

谢谢大家的帮助。。欢迎大家继续给好的意见。

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

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

是吗,我试试去。。

UIImagePickerController隐藏tabbar
10分
tab bar controller -》presentModalViewController

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明UIImagePickerController隐藏tabbar
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!