• iOS学习笔记19抽屉MMDrawerController使用 smallelephant_A


    今天写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-



  • 相关阅读:
    软件过程管理读书笔记02
    交叉验证
    oracle两张表数据匹配,Oracle-left join两表关联只取B表匹配到的第一条记录
    oracle批量新增
    oracle聚合函数XMLAGG用法简介
    form表单导致url连接重定向问题处理
    请求200,返回没内容,360可以看到response内容(待看),nginx返回内容被截取
    jsonp请求返回前面带有个null
    oracle日期转换的一些坑
    Java中将List<String>转化为以,分割的字符串或相反(转载)
  • 原文地址:https://www.cnblogs.com/adodo/p/5215411.html
Copyright © 2020-2023  润新知