1.引入MMDrawerController第三方文件 可pods到本地
2.初始化控制器
//1、初始化控制器
UIViewController *centerVC = [[MainViewController alloc]init];
UIViewController *leftVC = [[LeftViewController alloc]init];
//2、初始化导航控制器
UINavigationController *centerNvaVC = [[UINavigationController alloc]initWithRootViewController:centerVC];
UINavigationController *leftNvaVC = [[UINavigationController alloc]initWithRootViewController:leftVC];
//3、使用MMDrawerController
self.drawerController = [[MMDrawerController alloc]initWithCenterViewController:centerNvaVC leftDrawerViewController:leftNvaVC rightDrawerViewController:nil];
//4、设置打开/关闭抽屉的手势
self.drawerController.openDrawerGestureModeMask = MMOpenDrawerGestureModeAll;
self.drawerController.closeDrawerGestureModeMask =MMOpenDrawerGestureModeAll;
//5、设置左右两边抽屉显示的多少
self.drawerController.maximumLeftDrawerWidth = 200.0;
// self.drawerController.maximumRightDrawerWidth = 200.0;
//6、初始化窗口、设置根控 制器、显示窗口
self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
[self.window setRootViewController:self.drawerController];
[self.window makeKeyAndVisible];
3,在用到的ViewController里面设置
- (void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
//设置打开抽屉模式 这里要设置抽屉的打开和关闭,不能单一设置打开,不然就回不去了
[self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
[self.mm_drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"ground"]];
self.title = @"主页";
//1、设置导航栏的按钮
UIImage *Personal_center = [UIImage imageNamed:@"Group 3 Copy"];
UIButton *LeftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, Personal_center.size.width, Personal_center.size.width)];
[LeftButton setBackgroundImage:Personal_center forState:UIControlStateNormal];
LeftButton.layer.masksToBounds = YES;
[LeftButton addTarget:self action:@selector(leftBtn) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem* leftBarButton = [[UIBarButtonItem alloc] initWithCustomView:LeftButton];
self.navigationItem.leftBarButtonItem = leftBarButton;
// self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"Personal center"] style:UIBarButtonItemStylePlain target:self action:@selector(leftBtn)];
//框架作者提供了创建UIBarButtonItem的方法
// self.navigationItem.leftBarButtonItem = [[MMDrawerBarButtonItem alloc]initWithTarget:self action:@selector(leftBtn)];
// self.navigationItem.rightBarButtonItem = [[MMDrawerBarButtonItem alloc]initWithTarget:self action:@selector(rightBtn)];
//2、添加双击手势
UITapGestureRecognizer * doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
//2.1、双击
[doubleTap setNumberOfTapsRequired:2];
[self.view addGestureRecognizer:doubleTap];
//3、添加两个手指双击手势
UITapGestureRecognizer * twoFingerDoubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(twoFingerDoubleTap:)];
//3.1、双击
[twoFingerDoubleTap setNumberOfTapsRequired:2];
//3.2、两个手指 默认为一个
[twoFingerDoubleTap setNumberOfTouchesRequired:2];
[self.view addGestureRecognizer:twoFingerDoubleTap];
//设置导航栏颜色
[self.navigationController.navigationBar setBarTintColor:[UIColor blackColor]];
//修改导航栏字体颜色
[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName,nil]];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
// 创建首页视图
[self createUI];
}
-(void)leftBtn{
//这里的话是通过遍历循环拿到之前在AppDelegate中声明的那个MMDrawerController属性,然后判断是否为打开状态,如果是就关闭,否就是打开(初略解释,里面还有一些条件)6
[self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
}
/**
* 添加点击手势 一个手指双击
*/
-(void)doubleTap:(UITapGestureRecognizer*)gesture{
[self.mm_drawerController bouncePreviewForDrawerSide:MMDrawerSideLeft completion:nil];
}
/**
* 添加点击手势 两个个手指双击
*/
-(void)twoFingerDoubleTap:(UITapGestureRecognizer*)gesture{
[self.mm_drawerController bouncePreviewForDrawerSide:MMDrawerSideRight completion:nil];
}
-(void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = YES;
[self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeNone];
[self.mm_drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeNone];
}
在其他视图里面打开与MMDrawerController手势冲突的系统手势(滑动回到上一页)
继承自同一个RootViewController,可写在这里面
#import "MMDrawerController.h"
#import "UIViewController+MMDrawerController.h"
-(void)viewWillAppear:(BOOL)animated
{
self.mm_drawerController.openDrawerGestureModeMask = MMOpenDrawerGestureModeNone;
self.mm_drawerController.closeDrawerGestureModeMask = MMCloseDrawerGestureModeNone;
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return YES ;
}