多数情况下,开发项目期间需要用到导航栏,在项目开发搭建架构时便可通过重写
NavigationController的父类方法
对导航栏提前封装好,比如按钮,文字颜色,背景图片和颜色
+ (void)initialize
{
UINavigationBar *navgationBar = [UINavigationBarappearance];
[navgationBar setShadowImage:[UIImagenew]];//设置阴影图片
navgationBar.tintColor = [UIColorwhiteColor];//设置导航条颜色
CGFloat width = [UIScreenmainScreen].applicationFrame.size.width;
[navgationBar setBackgroundImage:[UIImageimageFromColor:[UIColornavigationTintColor]size:CGSizeMake(width,64)]forBarMetrics:UIBarMetricsDefault];//设置背景图片和颜色
[navgationBar setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColorbarButtonItemTintColor]}];//设置文字颜色
}
- (void)viewDidLoad
{
[superviewDidLoad];
self.delegate =self;//设置自身的代理方法
self.interactivePopGestureRecognizer.delegate = self;
}
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated//重写push的代理方法
{
if ([self.viewControllerscount] > 0) {
viewController.hidesBottomBarWhenPushed =YES;
}
[superpushViewController:viewControlleranimated:animated];
if ([self.viewControllerscount] > 1 && !viewController.navigationItem.leftBarButtonItem) {//判断是否会根视图
UIButton *backButton = [UIButtonbuttonWithType:UIButtonTypeCustom];
[backButton setImage:[UIImageimageNamed:@"nav_back"]forState:UIControlStateNormal];//设置返回按钮图片
backButton.bounds =CGRectMake(0,0,12,22);
[backButton addTarget:selfaction:@selector(backToPageAction)forControlEvents:UIControlEventTouchUpInside];
viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItemalloc]initWithCustomView:backButton];
}
}
- (void)backToPageAction//设置返回按钮
{
[selfpopViewControllerAnimated:YES];
}