当前位置: 代码迷 >> Iphone >> UIImagePickerController隐藏tabbar解决思路
  详细解决方案

UIImagePickerController隐藏tabbar解决思路

热度:483   发布时间:2016-04-25 06:53:51.0
UIImagePickerController隐藏tabbar
如题。我建的是一个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求救。。小弟新手,万望赐教。。


------解决方案--------------------
你这么整不可能隐藏啊

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


------解决方案--------------------
hidesBottomBarWhenPushed 在 viewcontroller push到navigation controller之前设置
------解决方案--------------------
 
第一种,在按钮调用的方法内写:

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

楼主可以试试

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