MMDrawerController

1,
集成
UIViewController * leftDrawer = [[UIViewController alloc] init];
UIViewController * center = [[UIViewController alloc] init];
UIViewController * rightDrawer = [[UIViewController alloc] init]; MMDrawerController * drawerController = [[MMDrawerController alloc]
initWithCenterViewController:center
leftDrawerViewController:leftDrawer
rightDrawerViewController:rightDrawer]; 详细代码

tabVC = [[TabBarController alloc]init];

//左边页面框架

LeftPage *leftController = [[LeftPage alloc] init];

self.drawerController = [[MMDrawerController alloc]

initWithCenterViewController:tabVC

leftDrawerViewController:leftController

rightDrawerViewController:nil];

[self.drawerController setShowsShadow:NO];

[self.drawerController setRestorationIdentifier:@"MMDrawer"];

[self.drawerController setMaximumLeftDrawerWidth:260.0];

// self.drawerController.visibleLeftDrawerWidth = 260;

[self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];

[self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];

//侧滑推出风格

[[MMExampleDrawerVisualStateManager sharedManager] setLeftDrawerAnimationType:1];

[self.drawerController

setDrawerVisualStateBlock:^(MMDrawerController *drawerController, MMDrawerSide drawerSide, CGFloat percentVisible) {

MMDrawerControllerDrawerVisualStateBlock block;

block = [[MMExampleDrawerVisualStateManager sharedManager]

drawerVisualStateBlockForDrawerSide:drawerSide];

if(block){

block(drawerController, drawerSide, percentVisible);

}

}];

[self.window setRootViewController:self.drawerController];

重新定义主界面左上角按钮 事件

-(void)leftBtnPressed

{

// [[(AppDelegate *)[[UIApplication sharedApplication] delegate] menuController] showLeftController:YES];

[self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];

}

当点击左边头像回到主界面的时候,想回到主界面,demo是又重新创建的一个新的,在项目中不可取。

2,当主界面进入二级页面,想去除手势。实现定制。

MMDrawerController.h 添加

/* 2016-5-10 mxt 添加

是否开启手势滑动出菜单*/

@property (assign,nonatomic) BOOL needSwipeShowMenu;//是否开启手势滑动出菜单

MMDrawerController.m 添加

#pragma mark - Helpers

-(void)setupGestureRecognizers{

pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureCallback:)];

[pan setDelegate:self];

//[self.view addGestureRecognizer:pan];

tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureCallback:)];

[tap setDelegate:self];

[self.view addGestureRecognizer:tap];

}

// 重写sett

- (void)setNeedSwipeShowMenu:(BOOL)needSwipeShowMenu{

_needSwipeShowMenu = needSwipeShowMenu;

if (needSwipeShowMenu) {

// NSLog(@"--------needSwipeShowMenu---------------------------------- yes  ");

[self.view addGestureRecognizer:pan];

}else{

// NSLog(@"--------needSwipeShowMenu---------------------------------- no  ");

[self.view removeGestureRecognizer:pan];

}

}

在使用的页面 添加

- (void)viewDidAppear:(BOOL)animated

{

[super viewDidAppear:animated];

NSLog(@" mine viewDidAppear  yes");

kAPPDelegate.drawerController.needSwipeShowMenu = YES;

}

- (void)viewWillDisappear:(BOOL)animated

{

kAPPDelegate.drawerController.needSwipeShowMenu = NO;

}


MMDrawerController 使用遇到的问题及定制的更多相关文章

  1. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  2. Webstorm+Webpack+echarts构建个性化定制的数据可视化图表&&两个echarts详细教程(柱状图,南丁格尔图)

    Webstorm+Webpack+echarts   ECharts 特性介绍 ECharts,一个纯 Javascript 的图表库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(I ...

  3. 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司

    一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...

  4. Gradle 实现 Android 多渠道定制化打包

    Gradle 实现 Android 多渠道定制化打包 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近在项目中遇到需要实现 Apk 多渠道.定制化打包, Google .百度查找了一些资料, ...

  5. Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用(后续)

    在[Xamarin+Prism小试牛刀:定制跨平台Outlook邮箱应用]里面提到了Microsoft 身份认证,其实这也是一大块需要注意的地方,特作为后续补充这些知识点.上章是使用了Microsof ...

  6. Django admin定制化,User字段扩展[原创]

    前言 参考上篇博文,我们利用了OneToOneField的方式使用了django自带的user,http://www.cnblogs.com/caseast/p/5909248.html , 但这么用 ...

  7. 用Kotlin实现Android定制视图(KAD 06)

    作者:Antonio Leiva 时间:Dec 27, 2016 原文链接:https://antonioleiva.com/custom-views-android-kotlin/ 在我们阅读有关c ...

  8. CSharpGL(28)得到高精度可定制字形贴图的极简方法

    CSharpGL(28)得到高精度可定制字形贴图的极简方法 回顾 以前我用SharpFont实现了解析TTF文件从而获取字形贴图的功能,并最终实现了用OpenGL渲染文字. 使用SharpFont,美 ...

  9. 不懂CSS也能定制博客界面!

    之前没想过定制博客界面,毕竟CSS,HTML什么的都不懂,不过看了这篇文章分分钟搞定: [详细图解]一步一步教你自定义博客园(cnblog)界面 我是基于模板BlueSky做了些改动,先看修改前后的效 ...

随机推荐

  1. C++中的位域(bit-filed):一种节省空间的成员

    转载自:http://www.cppblog.com/suiaiguo/archive/2009/07/16/90211.html 有一种被称为位域(bit-field) 的特殊的类数据成员,它可以被 ...

  2. Java语言与JVM中的Lambda表达式全解

    Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期Java Magazine中的一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. ...

  3. 【COM学习】之一、QueryInterface

    开始先说一句,学习com之前要学好c++ 对象模型. QueryInterface的使用: QueryInterface是IUnknown的一个成员函数,客户可以通过此函数来查询某个组件是否支持某个特 ...

  4. jquery实现停留半秒后再选择

    jquery实现tab停留半秒后,选中菜单.切换tab下的内容: var showHandler=null; function init(){ $("#tab_ul").find( ...

  5. Data Guard 之 浅析Switchover与Failover

    Data Guard主从库之间的角色切换分为以下两种:1)SwitchoverSwithchover通常都是人为的有计划的进行角色互换,比如升级等.它通常都是无损的,即不会有数据丢失.其执行主要分为两 ...

  6. java—— 调用系统命令

    调用所在环境的命令 链接:http://blog.csdn.net/yy6060/article/details/6311916 1 import java.io.*; 2 class Exec{ 3 ...

  7. Oracle 数据库 Database Express Edition 11g Release 2 (11.2) 错误解决集锦(安装方面)

    前言:第一次接触数据库,想下载个oracle试玩下(虽然听说一般大企业才用),到 官网下载 了个简易版 XE 版本,安装时要注意记住自己输入的数据库密码(口令)  还有安装路径不能含有空格(Do no ...

  8. Nodejs 上传下载功能的实现(同步)

    上传和下载可分为两种,一种是form表单的形式(同步),另一种是Ajax的形式(异步). 示例一(form表单): html代码如下: <!DOCTYPE html> <html&g ...

  9. Java面向对象编辑

                      1.面向对象的软件开发方法简介:            1).把软件系统看成是各种对象的集合,更接近人类自然思维方式.      2).软件需求的变动往往都是功能的 ...

  10. 【错误总结之(一)】error LNK2038: 检測到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”

    1>cvblob.lib(cvblob.obj) : error LNK2038: 检測到"_ITERATOR_DEBUG_LEVEL"的不匹配项: 值"0&quo ...