是否可以在按下按钮时隐藏标签栏以允许全屏显示内容?

Jon*_*nah 19 iphone tabbar uitabbarcontroller uitableview

我在基于导航的应用程序的详细视图中有一个UITabBar.我将文本和图像存储在tableview中,并希望用户能够点击单元格以隐藏导航控制器和标签栏以全屏查看内容.

我发现这个代码用于隐藏顶部条形图,但隐藏标签栏似乎并不容易.

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
 [self.navigationController setNavigationBarHidden:YES animated:YES];
Run Code Online (Sandbox Code Playgroud)

有谁知道如何做到这一点?

一旦视图已加载,此代码无法隐藏tabBar.

  yourTabViewController.hidesBottomBarWhenPushed = YES;
Run Code Online (Sandbox Code Playgroud)

这是我找到的代码.似乎仅在加载视图时才起作用,因此一旦它出现,它就不能用于隐藏标签栏.我仍然在努力做这项工作.请帮忙!!!

    self.tabBarController.tabBar.hidden = YES;
Run Code Online (Sandbox Code Playgroud)

Jos*_*Lin 26

有一种内置的方法可以做到这一点:

self.hidesBottomBarWhenPushed = YES;

但是你必须在推送视图之前执行此操作.这是您可能想要使用它的方式:

ChildViewController* childVC = [[ChildViewController alloc] init];
childVC.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:childVC animated:YES];
[childVC release];
Run Code Online (Sandbox Code Playgroud)

  • 或者只是在控制器的init方法中设置self.hidesBottomBarWhenPushed = YES (9认同)
  • 如果我想用堆栈顶部的根viewController做这个怎么办? (2认同)

Jon*_*nah 8

我找到的最佳解决方法是更改​​视图大小,使其覆盖标签栏.这是我选择行时隐藏statusBar,navBar和tabBar的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

if (appDelegate.navigationController.navigationBar.hidden == NO)
{
    [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    [appDelegate.navigationController setNavigationBarHidden:YES animated:YES];

    [UIView beginAnimations:@"HideTabbar" context:nil];
    [UIView setAnimationDuration:.2];
    self.view.frame = CGRectMake(0,0,320,480);
    [UIView commitAnimations];
}
if (appDelegate.navigationController.navigationBar.hidden == YES)
{
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
    [appDelegate.navigationController setNavigationBarHidden:NO animated:YES];

    [UIView beginAnimations:@"ShowTabbar" context:nil];
    [UIView setAnimationDuration:.2];
    self.view.frame = CGRectMake(0,0,320,368);
    [UIView commitAnimations];
}   
}
Run Code Online (Sandbox Code Playgroud)


Ale*_*nte 6

我的解决方案

// Hide tab bar animated
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:YES];

// Display tab bar animated
CATransition *animation = [CATransition animation];
[animation setType:kCATransitionFade];
[[self.view.window layer] addAnimation:animation forKey:@"layerAnimation"]; 
[self.tabBarController.tabBar setHidden:NO];
Run Code Online (Sandbox Code Playgroud)

你必须添加 #import <QuartzCore/QuartzCore.h>