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

 
posted @ 2018-02-28 13:44  isHakan  阅读(808)  评论(0编辑  收藏  举报