除了使用
hidesBottomBarWhenPushed = YES;
这个方法的另外一个方法
https://github.com/idevsoftware/Cocoa-Touch-Additions/tree/master/UITabBarController_setHidden
http://stackoverflow.com/questions/6383069/how-to-hide-show-tab-bar-of-a-view-with-a-navigation-bar-in-ios
#import <UIKit/UIKit.h> @interface UITabBarController (HideTabBar) @property (nonatomic, getter=isTabBarHidden) BOOL tabBarHidden; - (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated;
// // UITabBarController+HideTabBar.m // NPS // // Created by Carlos Oliva on 04-02-12. // Copyright (c) 2012 iDev. All rights reserved. // #import "UITabBarController+HideTabBar.h" #define kAnimationDuration .3 @implementation UITabBarController (HideTabBar) - (BOOL)isTabBarHidden { CGRect viewFrame = self.view.frame; CGRect tabBarFrame = self.tabBar.frame; return tabBarFrame.origin.y >= viewFrame.size.height; } - (void)setTabBarHidden:(BOOL)hidden { [self setTabBarHidden:hidden animated:NO]; } - (void)setTabBarHidden:(BOOL)hidden animated:(BOOL)animated { BOOL isHidden = self.tabBarHidden; if(hidden == isHidden) return; UIView *transitionView = [[[self.view.subviews reverseObjectEnumerator] allObjects] lastObject]; if(transitionView == nil) { NSLog(@"could not get the container view!"); return; } CGRect viewFrame = self.view.frame; CGRect tabBarFrame = self.tabBar.frame; CGRect containerFrame = transitionView.frame; tabBarFrame.origin.y = viewFrame.size.height - (hidden ? 0 : tabBarFrame.size.height); containerFrame.size.height = viewFrame.size.height - (hidden ? 0 : tabBarFrame.size.height); [UIView animateWithDuration:kAnimationDuration animations:^{ self.tabBar.frame = tabBarFrame; transitionView.frame = containerFrame; } ]; } @end