一、隐藏一个naviBar
UINavigationController + 若干个UIViewController的形式中,只想隐藏其中一个UIViewController的navigationBar, 切换到其他页面的时候需要保留NavigationBar的做法:
尝试一:
在那个想隐藏NaviBar的VC里,在view did load方法里写 [controllersetNavigationBarHidden:YES]; 会使所有视图的导航条都没有了。
我只想隐藏首页的导航条 ,请问如何实现。
尝试二:
在每一个需要隐藏NaviBar的ViewController的ViewWillAppear里面都按如下写:
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
在每一个不需要隐藏NaviBar的ViewController的ViewWillAppear里面都按如下写:
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
二、隐藏tabBar
1://隐藏tabBar
WebViewController *webVc = [[WebViewController alloc] init];
webVc.hidesBottomBarWhenPushed
= YES;
[self.navigationController pushViewController:webVcanimated:YES];
webVc.hidesBottomBarWhenPushed
= NO;
[webVcrelease];
2.系统方法
self.hidesBottomBarWhenPushed
= YES;
3:自定义tabBar时候,由tabBarController管理的
//隐藏tabBar
- (void) hideTabBar:(BOOL) hidden{
[UIViewbeginAnimations:nil context:NULL];
[UIViewsetAnimationDuration:0];
for(UIView*view in self.tabBarController.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
if (hidden) {
[view setFrame:CGRectMake(view.frame.origin.x, iphone5?568:480,view.frame.size.width, view.frame.size.height)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x,iphone5?568-49:480-49, view.frame.size.width,view.frame.size.height)];
}
}
else
{
if (hidden) {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y,view.frame.size.width, iphone5?568:480)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y,view.frame.size.width,
iphone5?568-49:480-49)];
}
}
}
[UIViewcommitAnimations];
}
调整子视图
for (UIView *subView in self.view.subviews) {
if ([subView isKindOfClass:NSClassFromString(@"UITransitionView")]){
//调整子视图的高度,UITransitionView视图为UINavitaionController的根视图
//
subView.frame = CGRectMake(subView.frame.origin.x,subView.frame.origin.y, subView.frame.size.width, 480);
CGRect frame = subView.frame;
frame.size.height = 480;
subView.frame = frame;
}
}
4:类似方法3
- (void)makeTabBarHidden:(BOOL)hide
{
if ([self.tabBarController.view.subviews count] < 2)
{
return;
}
UIView*contentView;
if ([[self.tabBarController.view.subviews objectAtIndex:0]isKindOfClass:[UITabBar class]] )
{
contentView = [self.tabBarController.view.subviewsobjectAtIndex:1];
}
else
{
contentView = [self.tabBarController.view.subviewsobjectAtIndex:0];
}
//
[UIViewbeginAnimations:@"TabbarHide" context:nil];
if ( hide)
{
contentView.frame = self.tabBarController.view.bounds;
}
else
{
contentView.frame =CGRectMake(self.tabBarController.view.bounds.origin.x,
self.tabBarController.view.bounds.origin.y,
self.tabBarController.view.bounds.size.width,
self.tabBarController.view.bounds.size.height -self.tabBarController.tabBar.frame.size.height);
}
self.tabBarController.tabBar.hidden = hide;
}