ios 自定义导航栏,开启侧滑返回手势

自定义一个常用ListViewController

.h文件

1 #import <UIKit/UIKit.h>
2 
3 @interface ListViewController : UIViewController
4 
5 -(void)diquButtonClick;
6 
7 @end

.m文件

  1 //
  2 //  ListViewController.m
  3 //  OuLianWang
  4 //
  5 //  Created by allenariel on 15/6/24.
  6 //  Copyright (c) 2015年 皇室美家. All rights reserved.
  7 //
  8 
  9 #import "ListViewController.h"
 10 #import "ZDYTabBarController.h"
 11 #import "GustomViewController.h"
 12 
 13 @interface ListViewController ()
 14 
 15 @end
 16 
 17 @implementation ListViewController
 18 -(void)loadView
 19 {
 20      [super loadView];
 21      [self deplyNavigationController];
 22      self.view.backgroundColor=XZColor(238, 238, 238);
 23 }
 24 - (void)viewDidLoad
 25 {
 26     
 27     [super viewDidLoad];
 28     [self deplyNavigationController];
 29 
 30 //    [self hideTabBar];
 31     
 32 }
 33 -(void)viewWillAppear:(BOOL)animated
 34 {
 35     
 36     ZDYTabBarController *tabBar=(ZDYTabBarController*)self.navigationController.tabBarController;
 37     tabBar.zqTabBar.hidden=YES;
 38    
 39 }
 40 -(void)hideTabBar
 41 {
 42     ZDYTabBarController *tabBar=(ZDYTabBarController*)self.navigationController.tabBarController;
 43     tabBar.zqTabBar.hidden=YES;
 44 //    self.view.backgroundColor=ZQColor(232, 232, 232);
 45 
 46 }
 47 -(void)viewWillDisappear:(BOOL)animated
 48 {
 49     [super viewWillDisappear:animated];
 50     ZDYTabBarController *tabBar=(ZDYTabBarController*)self.navigationController.tabBarController;
 51     tabBar.zqTabBar.hidden=NO;
 52 }
 53 
 54 #pragma mark-------配置导航栏
 55 
 56 -(void)deplyNavigationController
 57 {
 58     GustomViewController *navi = [GustomViewController new];
 59     self.navigationController.navigationBar.barTintColor=XZColor(22,173,249);
 60     [self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:15],
 61                                                                       NSForegroundColorAttributeName:[UIColor whiteColor]}];
 62     UIButton *diqubutton=[UIButton buttonWithType:UIButtonTypeCustom];
 63     [diqubutton  setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
 64     [diqubutton  addTarget:self action:@selector(diquButtonClick) forControlEvents:UIControlEventTouchUpInside];
 65     diqubutton.titleLabel.font=[UIFont boldSystemFontOfSize:18];
 66     diqubutton.frame=CGRectMake(0, 0,20,20);
 67     UIBarButtonItem *leftbutton=[[UIBarButtonItem alloc]initWithCustomView:diqubutton];
 68     
 69     // 调整 leftBarButtonItem 在 iOS7 下面的位置
 70     if(([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0?20:0))
 71         
 72     {
 73         UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
 74                                                                                        target:nil action:nil];
 75         negativeSpacer.width = -10;//这个数值可以根据情况自由变化
 76         self.navigationItem.leftBarButtonItems = @[negativeSpacer, leftbutton];
 77     }
 78     else
 79         
 80         self.navigationItem.leftBarButtonItem = leftbutton;
 81     
 82     self.tabBarController.tabBar.hidden=YES;
 83 }
 84 -(void)diquButtonClick
 85 {
 86     [self.navigationController popViewControllerAnimated:YES];
 87     
 88 }
 89 - (void)didReceiveMemoryWarning {
 90     [super didReceiveMemoryWarning];
 91     // Dispose of any resources that can be recreated.
 92 }
 93 
 94 /*
 95 #pragma mark - Navigation
 96 
 97 // In a storyboard-based application, you will often want to do a little preparation before navigation
 98 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
 99     // Get the new view controller using [segue destinationViewController].
100     // Pass the selected object to the new view controller.
101 }
102 */
103 
104 @end

自定义GuestomViewController,

.m

  1 //
  2 //  GustomViewController.m
  3 //  暇课
  4 //
  5 //  Created by mac on 15/12/16.
  6 //  Copyright © 2015年 暇课. All rights reserved.
  7 //
  8 
  9 #import "GustomViewController.h"
 10 
 11 @interface GustomViewController ()<UINavigationControllerDelegate, UIGestureRecognizerDelegate>
 12 
 13 @end
 14 
 15 @implementation GustomViewController
 16 
 17 
 18 - (instancetype)initWithRootViewController:(UIViewController *)rootViewController
 19  {
 20     if (self = [super initWithRootViewController:rootViewController]) {
 21             // 设置navigationBar的背景颜色,根据需要自己设置
 22             self.navigationBar.barTintColor = XZColor(22,173,249);
 23             // 设置navigationBar是否透明,不透明的话会使可用界面原点下移(0,0)点为导航栏左下角下方的那个点
 24             self.navigationBar.translucent = NO;
 25             // 设置navigationBar是不是使用系统默认返回,默认为YES
 26             self.interactivePopGestureRecognizer.enabled = YES;
 27             // 创建一个颜色,便于之后设置颜色使用
 28             UIColor * color = [UIColor whiteColor];
 29             // 设置navigationBar元素的背景颜色,不包括title
 30             self.navigationBar.tintColor = color;
 31             // 设置navigationController的title的字体颜色
 32             NSDictionary * dict=[NSDictionary dictionaryWithObject:color forKey:NSForegroundColorAttributeName];
 33             self.navigationBar.titleTextAttributes = dict;
 34         
 35         self.navigationBar.barTintColor=XZColor(22,173,249);
 36         [self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[UIFont boldSystemFontOfSize:15],
 37                                                                           NSForegroundColorAttributeName:[UIColor whiteColor]}];
 38         UIButton *diqubutton=[UIButton buttonWithType:UIButtonTypeCustom];
 39         [diqubutton  setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
 40         [diqubutton  addTarget:self action:@selector(diquButtonClick) forControlEvents:UIControlEventTouchUpInside];
 41         diqubutton.titleLabel.font=[UIFont boldSystemFontOfSize:18];
 42         diqubutton.frame=CGRectMake(0, 0,20,20);
 43         UIBarButtonItem *leftbutton=[[UIBarButtonItem alloc]initWithCustomView:diqubutton];
 44         
 45         // 调整 leftBarButtonItem 在 iOS7 下面的位置
 46         if(([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0?20:0))
 47             
 48         {
 49             UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
 50                                                                                            target:nil action:nil];
 51             negativeSpacer.width = -10;//这个数值可以根据情况自由变化
 52             self.navigationItem.leftBarButtonItems = @[negativeSpacer, leftbutton];
 53         }
 54         else
 55             
 56             self.navigationItem.leftBarButtonItem = leftbutton;
 57         
 58         self.tabBarController.tabBar.hidden=YES;
 59         }
 60     
 61      return self;
 62 }
 63 
 64 //- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
 65 //{
 66 //    // fix 'nested pop animation can result in corrupted navigation bar'
 67 //    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
 68 //        self.interactivePopGestureRecognizer.enabled = NO;
 69 //    }
 70 //    
 71 //    [super pushViewController:viewController animated:animated];
 72 //}
 73 //
 74 //- (void)navigationController:(UINavigationController *)navigationController
 75 //       didShowViewController:(UIViewController *)viewController
 76 //                    animated:(BOOL)animated
 77 //{
 78 //    if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
 79 //        navigationController.interactivePopGestureRecognizer.enabled = YES;
 80 //    }
 81 //}
 82 
 83 - (void)viewDidLoad {
 84     [super viewDidLoad];
 85     
 86     
 87     // 为self创建弱引用对象
 88     __weak typeof (self) weakSelf = self;
 89     if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
 90         self.interactivePopGestureRecognizer.delegate = weakSelf;
 91     }
 92 }
 93 
 94 - (void)didReceiveMemoryWarning {
 95     [super didReceiveMemoryWarning];
 96     // Dispose of any resources that can be recreated.
 97 }
 98 
 99 /*
100 #pragma mark - Navigation
101 
102 // In a storyboard-based application, you will often want to do a little preparation before navigation
103 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
104     // Get the new view controller using [segue destinationViewController].
105     // Pass the selected object to the new view controller.
106 }
107 */
108 
109 @end

完成~

原文地址:https://www.cnblogs.com/damnbird/p/5050332.html