iOS解决显示 <-> 隐藏导航栏 顶部留白问题
- 创建一个 UINavigationController基类。
#import <UIKit/UIKit.h>
@interface HKBaseNavigationController : UINavigationController
@end
#import "HKBaseNavigationController.h"
@interface HKBaseNavigationController ()
@end
@implementation HKBaseNavigationController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
//重写pusView方法
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
[super pushViewController:viewController animated:animated];
[self setNavigationBarHidden:NO animated:YES];
}
@end
- 将上面创建的基类设置为app的主框架 - APPDelegate中设置
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
HKMainViewController *mainVC = [[HKMainViewController alloc] init];
HKBaseNavigationController *baseNav = [[HKBaseNavigationController alloc] initWithRootViewController:mainVC];
self.window.rootViewController = baseNav;
[self.window makeKeyAndVisible];
return YES;
}
- 在需要隐藏导航栏的界面处
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}