当前位置: 首页 > news >正文

iOS学习笔记19-抽屉MMDrawerController使用

今天写qq的模仿项目,找到一个比较简单的第三方框架

MMDrawerController

 

下面简单介绍一下 

MMDrawerController的使用

预览效果如图

 

 

创建一个抽屉视图

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



打开的手势枚举
  • MMOpenDrawerGestureMode

    • MMOpenDrawerGestureModePanningNavigationBar: The user can open the drawer by panning anywhere on the navigation bar.
    • MMOpenDrawerGestureModePanningCenterView: The user can open the drawer by panning anywhere on the center view.
    • MMOpenDrawerGestureModeBezelPanningCenterView: The user can open the drawer by starting a pan anywhere within 20 points of the bezel.
    • MMOpenDrawerGestureModeCustom: The developer can provide a callback block to determine if the gesture should be recognized. More information below.




下面介绍一个简单的小栗子

// 第一步在AppDelegate.h中

@property (strong ,nonatomic) MMDrawerController * drawerController;

// 然后创建,这里是左中右三个页面,每个页面都用UINavigationController包一层如下

UINavigationController *rightNavi = [[UINavigationController alloc]initWithRootViewController:_search];

 

    [rightNavi setRestorationIdentifier:@"RightNavigationControllerRestorationKey"];

 

    _drawerController = [[MMDrawerController alloc]

 

                         initWithCenterViewController:center

 leftDrawerViewController:leftNavi

 

                         rightDrawerViewController:rightNavi];

    [self.drawerController setShowsShadow:NO];

 

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

// 设置右边页面显示宽度,左边同理

[self.drawerController setMaximumRightDrawerWidth:ScreenWidth];

// 左右滑动,三个页面间切换

    [self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];

    [self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];

// 设为根视图

 

[self.window setRootViewController:_drawerController];

// 需要注意的是如果使用按钮实现push,pop功能,在左中右三个页面上不能使用self.navigationcontroller.pushviewcontroller而是使用mm自带的 中间页面可用如下代码

[self.mm_drawerController openDrawerSide:MMDrawerSideLeft

 

                                    animated:YES

 

                                  completion:^(BOOL finished) {

 

        

 

    }];

// openDrawerSide 指的是方向 功能同上面手势功能一样

// 左右页面对应使用返回,例如写在左上角的返回按钮的点击事件里如下

//[button addTarget:self action:@selector(clickLeft) //forControlEvents:UIControlEventTouchUpInside];

 

 //   UIBarButtonItem* backItem = [[UIBarButtonItem alloc] //initWithC

ustomView:button];

 

    

 

    [self.navigationItem setLeftBarButtonItem:backItem];

[self.mm_drawerController closeDrawerAnimated:YES completion:^(BOOL finished) {

 

    }];

 

 

代码见 github:https://github.com/Disneydusunan/6-TEST--MMDWRAWER-



转载于:https://www.cnblogs.com/adodo/p/5215411.html

相关文章:

  • thrift 远程服务调用 简单示例
  • 中国移动短信网关错误代码汇总(完整版)
  • 编译安装 apache+mysql+php 详细步骤
  • OC基础--常用类的初步介绍与简单实用之NSString
  • iOS UIViewController生命周期控制
  • Java 异常处理的 9 个最佳实践
  • Linux运维工程师面试题第九套
  • js判断是否是用微信浏览器打开
  • 147. Insertion Sort List
  • java值类型和引用类型
  • 如何查看oracle表空间是否自动扩展
  • UBuntu14.04下安装和卸载Qt5.3.1
  • LeetCode 74 Search a 2D Matrix(搜索2D矩阵)
  • CentOS 6安装配置LDAP
  • 习题6-2 S-Trees(树)
  • JavaScript-如何实现克隆(clone)函数
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • eclipse的离线汉化
  • egg(89)--egg之redis的发布和订阅
  • js中forEach回调同异步问题
  • JWT究竟是什么呢?
  • learning koa2.x
  • Linux Process Manage
  • node学习系列之简单文件上传
  • spring学习第二天
  • unity如何实现一个固定宽度的orthagraphic相机
  • 前端自动化解决方案
  • 强力优化Rancher k8s中国区的使用体验
  • 如何胜任知名企业的商业数据分析师?
  • puppet连载22:define用法
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 阿里云API、SDK和CLI应用实践方案
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #常见电池型号介绍 常见电池尺寸是多少【详解】
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (LeetCode 49)Anagrams
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (三十五)大数据实战——Superset可视化平台搭建
  • (十八)三元表达式和列表解析
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)kafka实战——kafka源码编译启动
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)如何上传第三方jar包至Maven私服让maven项目可以使用第三方jar包
  • **PHP二维数组遍历时同时赋值
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .Net多线程总结
  • .NET中统一的存储过程调用方法(收藏)
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [AR]Vumark(下一代条形码)
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C#小技巧]如何捕捉上升沿和下降沿
  • [Codeforces1137D]Cooperative Game