学习方法,看readme,看给的Demo

看功能怎么实现的去模仿,个人感觉模仿是最快的学习方法

废话少说,上代码

导入MMDrawerController框架我就不多少了,之后做什么才是我们才关注的事情

首先介绍一下框架的基本机构,框架有中心,左右三个controller 所以要创建三个controller ,将三个控制器放在框架的指定位置即可,看代码理解

#import "AppDelegate.h"

//抽屉效果
#import "MMDrawerController.h"

//中心视图
#import "centerViewController.h"

//左视图
#import "leftViewController.h"

//右视图
#import "rightViewController.h"

//导航栏,此处是需要注意的地方,因为,如果只设置一个-控制器的,会出现导航栏不随着controller移动
#import "NaviViewController.h"

//这是reveal图像监控的同文件,专门的配置随后文章附上
#import <dlfcn.h>
@interface AppDelegate ()

//将抽屉效果升级为属性,全局持有
@property (nonatomic,strong) MMDrawerController *drawer;
@end

@implementation AppDelegate

//图像显示
- (void)loadReveal
{
    if (NSClassFromString(@"IBARevealLoader") == nil)
    {
        NSString *revealLibName = @"libReveal";
        NSString *revealLibExtension = @"dylib";
        NSString *error;
        NSString *dyLibPath = [[NSBundle mainBundle] pathForResource:revealLibName ofType:revealLibExtension];
        
        if (dyLibPath != nil)
        {
            NSLog(@"Loading dynamic library: %@", dyLibPath);
            void *revealLib = dlopen([dyLibPath cStringUsingEncoding:NSUTF8StringEncoding], RTLD_NOW);
            
            if (revealLib == NULL)
            {
                error = [NSString stringWithUTF8String:dlerror()];
            }
        }
        else
        {
            error = @"File not found.";
        }
        
        if (error != nil)
        {
            NSString *message = [NSString stringWithFormat:@"%@.%@ failed to load with error: %@", revealLibName, revealLibExtension, error];
            [[[UIAlertView alloc] initWithTitle:@"Reveal library could not be loaded" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
        }
    }
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

UIViewController *left = [leftViewController new];
    left.view.backgroundColor = [UIColor whiteColor];
 // UIViewController *right = [rightViewController new];
    UINavigationController *leftNavi = [[UINavigationController alloc]initWithRootViewController:left];
   // UINavigationController*rightNavi = [[UINavigationController alloc]initWithRootViewController:right];
  // right.view.backgroundColor = [UIColor redColor];
    UIViewController *center = [centerViewController new];
    UINavigationController *centerNavi = [[NaviViewController alloc]initWithRootViewController:center];

//这里我只实现了左侧栏
    self.drawer = [[MMDrawerController alloc]initWithCenterViewController:centerNavi leftDrawerViewController:leftNavi rightDrawerViewController:nil];

center.view.backgroundColor = [UIColor blueColor];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

//设置阴影效果
    [self.drawer setShowsShadow:NO];

//设置左侧栏打开时的宽度
    [self.drawer setMaximumLeftDrawerWidth:100];

//开启手势开启左侧栏,手势是框架自带的直接使用,可以自定义.,参照原来框架的readme实现
    [self.drawer setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];

//开启关闭手势
    [self.drawer setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];

UIColor * tintColor = [UIColor colorWithRed:29.0/255.0
                                          green:173.0/255.0
                                           blue:234.0/255.0
                                          alpha:1.0];
    [self.window setTintColor:tintColor];
    [self.window setRootViewController:self.drawer];

//调用图像监控
    [self loadReveal];
    return YES;
}

下面看一下一个导航的情况,好吧几乎看不出来了,

demo地址:https://github.com/lizhaojie001/Drawer.git

---恢复内容结束---

MMDrawerController 的实践,已经实现,几行简单的代码实现侧栏的更多相关文章

  1. SAE实践——用SVN命令行同步/提交代码

    1. 同步应用到本地 注:首次使用svn需要输入安全认证密码 在终端输入以下命令 svn co https://svn.sinaapp.com/nyhello nyhello替换为自己的应用名称. 用 ...

  2. kafka原理和实践(二)spring-kafka简单实践

    系列目录 kafka原理和实践(一)原理:10分钟入门 kafka原理和实践(二)spring-kafka简单实践 kafka原理和实践(三)spring-kafka生产者源码 kafka原理和实践( ...

  3. DOS命令行简单用法

    DOS命令行简单用法 基本用法 1.cd(回车)从当前目录切回到根目录. 2.dir(回车)列出当前目录下的所有文件. 3.md kkk(回车)在当前目录下创建一个名称为kkk的文件夹. 4.rd k ...

  4. 7z命令行简单使用

    7z命令行简单使用 网上有很多博客都有记录7z的命令行使用方式,但看起来乱起八糟的,不知所云. 急于使用者可以直接看实例 注:我仅仅记录我认为常用的命令,毕竟没有那么多的精力去学习不常用的东西. 简介 ...

  5. 如何通过命令行简单的执行C程序

    如何通过命令行简单的执行C语言编写的程序 ​ 首先,我们知道C语言程序都是以xxx.c结尾的,这在Windows系统和Linux系统都是一样的.其次,C程序的执行过程为四步:预处理--编译--汇编-- ...

  6. iOS应用开发最佳实践:编写高质量的Objective-C代码

    本文转载至 http://www.cocoachina.com/industry/20131129/7445.html 点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问 ...

  7. Lucene.net站内搜索—3、最简单搜索引擎代码

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  8. C++统计代码注释行数 & 有效代码行数 & 代码注释公共行 & 函数个数

    问题来源,在14年的暑假的一次小项目当中遇到了一个这样的问题,要求统计C++代码的注释行数,有效代码行数,代码注释公共行数,以及函数个数. 下面稍微解释一下问题, 1)注释行数:指有注释的行,包括有代 ...

  9. Python逐块读取大文件行数的代码 - 为程序员服务

    Python逐块读取大文件行数的代码 - 为程序员服务 python数文件行数最简单的方法是使用enumerate方法,但是如果文件很大的话,这个方法就有点慢了,我们可以逐块的读取文件的内容,然后按块 ...

随机推荐

  1. Oracle 转换函数

    Oracle 转换函数 -- TO_CHAR(date|number {,fmt} {,nlsparams}) fmt:格式内容,返回的字符串是什么格式的,在此处指定:nlsparams:指定国家语言 ...

  2. 剖析magento中关于Email模板的设置

    public function send()    {        $emailTemplate = Mage::getModel('core/email_template');        // ...

  3. exit函数的妙用

    写了一个程序,用来推断一个文件是否存在: #include<stdio.h> main() {  FILE *fp;  fp = fopen ("/home/wang/my/ct ...

  4. Eclipse配置Hadoop开发环境

    Step 1:选择Hadoop版本对应的Eclipse插件jar包(可自行编译),我的Hadoop版本是hadoop-0.20.2,对应的插件应该是:hadoop-0.20.2-eclipse-plu ...

  5. HTML界面JQuery ajax 返回200,但走Error方法

    原因是JSON拼装的有问题. 都需要放在双引号里面,或者修改dataType的类型为  "html". http://blog.csdn.net/imjcoder/article/ ...

  6. OC弱语法

    OC是在运行过程中才会检测对象有没有实现相应的方法,所有编译过程只给出警告:可能找不到对应方法: 如果程序在运行过程中出错,就会出现程序闪退:     类方法:类可以直接调用的方法,相当于java中的 ...

  7. Asp.Net MVC 常用开发方式之EF Code First

    在我们的工作和学习当中,经常会遇到中小型项目,这些项目除了业务上的区别较大外,对于底层和数据访问,其实都差不多.记得以前做项目时,每次都要重复的写底层操作数据库的代码,不仅浪费时间,也无太大意思,后来 ...

  8. Java异常分类 转载

    Java异常分类 http://blog.csdn.net/woshixuye/article/details/8230407     一.基本概念 看java的异常结构图 Throwable是所有异 ...

  9. juce中的引用计数

    这个类提供了最基本的引用计数管理,界面库中,经常都需要消息发送,而带来的后果就是不知道消息中包含的对象是否还存在,如果不能很好管理的话就容易出现访问销毁了的对象这样的情况,所以,juce的界面无素也基 ...

  10. select * from (select P.*,ROWNUM RN FROM(select * from Mp_Relatedart where pubbaseid=785 order by ID ASC )P)M WHERE M.RN>2 and M.RN <= 7

    select * from (select P.*,ROWNUM RN FROM(select * from Mp_Relatedart where pubbaseid=785 order by ID ...