iOS开发中抽屉效果的第三方库MMDrawerController的使用

  1 //
  2 
  3 // AppDelegate.m
  4 
  5 // MMDrawerController
  6 
  7 //
  8 
  9 // Created by yl on 16/6/24.
 10 
 11 // Copyright © 2016年 Itsimple. All rights reserved.
 12 
 13 //
 14 
 15  
 16 
 17 #import "AppDelegate.h"
 18 
 19 #import "YLNavigationController.h"
 20 
 21 #import "YLHomeViewController.h"
 22 
 23 #import "YLLeftViewController.h"
 24 
 25 #import "MMDrawerController.h"
 26 
 27  
 28 
 29  
 30 
 31 @interface AppDelegate ()
 32 
 33  
 34 
 35 @end
 36 
 37  
 38 
 39 @implementation AppDelegate
 40 
 41  
 42 
 43  
 44 
 45 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 46 
 47  
 48 
 49  
 50 
 51 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
 52 
 53  
 54 
 55 YLNavigationController *centerNav = [[YLNavigationController alloc] initWithRootViewController:[[YLHomeViewController alloc] init]];
 56 
 57  
 58 
 59 YLLeftViewController *leftVC = [[YLLeftViewController alloc] init];
 60 
 61  
 62 
 63 MMDrawerController *mmdc = [[MMDrawerController alloc] initWithCenterViewController:centerNav leftDrawerViewController:leftVC];
 64 
 65  
 66 
 67 [mmdc setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
 68 
 69  
 70 
 71 [mmdc setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];
 72 
 73  
 74 
 75 self.window.rootViewController = mmdc;
 76 
 77  
 78 
 79 [self.window makeKeyAndVisible];
 80 
 81  
 82 
 83  
 84 
 85  
 86 
 87 return YES;
 88 
 89 }
 90 
 91  
 92 
 93 - (void)applicationWillResignActive:(UIApplication *)application {
 94 
 95 // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
 96 
 97 // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
 98 
 99 }
100 
101  
102 
103 - (void)applicationDidEnterBackground:(UIApplication *)application {
104 
105 // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
106 
107 // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
108 
109 }
110 
111  
112 
113 - (void)applicationWillEnterForeground:(UIApplication *)application {
114 
115 // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background.
116 
117 }
118 
119  
120 
121 - (void)applicationDidBecomeActive:(UIApplication *)application {
122 
123 // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
124 
125 }
126 
127  
128 
129 - (void)applicationWillTerminate:(UIApplication *)application {
130 
131 // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
132 
133 }
134 
135  
136 
137 @end
  1 //
  2 
  3 // YLHomeViewController.m
  4 
  5 // MMDrawerController
  6 
  7 //
  8 
  9 // Created by yl on 16/6/24.
 10 
 11 // Copyright © 2016年 Itsimple. All rights reserved.
 12 
 13 //
 14 
 15  
 16 
 17 #import "YLHomeViewController.h"
 18 
 19 #import "MMDrawerController.h"
 20 
 21  
 22 
 23 @interface YLHomeViewController ()
 24 
 25  
 26 
 27 @end
 28 
 29  
 30 
 31 @implementation YLHomeViewController
 32 
 33  
 34 
 35 - (void)viewDidLoad {
 36 
 37 [super viewDidLoad];
 38 
 39  
 40 
 41 [self setNavBar];
 42 
 43  
 44 
 45 }
 46 
 47  
 48 
 49  
 50 
 51 - (void)setNavBar{
 52 
 53  
 54 
 55 self.view.backgroundColor = [UIColor purpleColor];
 56 
 57  
 58 
 59 self.navigationItem.title = @"Demo";
 60 
 61  
 62 
 63 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"item"] style:0 target:self action:@selector(leftBarButtonItemClick)];
 64 
 65 }
 66 
 67  
 68 
 69  
 70 
 71 - (void)leftBarButtonItemClick{
 72 
 73  
 74 
 75 MMDrawerController *mmdc = (MMDrawerController*)[UIApplication sharedApplication].keyWindow.rootViewController;
 76 
 77  
 78 
 79 [mmdc toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
 80 
 81  
 82 
 83 }
 84 
 85  
 86 
 87  
 88 
 89 - (void)didReceiveMemoryWarning {
 90 
 91 [super didReceiveMemoryWarning];
 92 
 93 // Dispose of any resources that can be recreated.
 94 
 95 }
 96 
 97  
 98 
 99 /*
100 
101 #pragma mark - Navigation
102 
103  
104 
105 // In a storyboard-based application, you will often want to do a little preparation before navigation
106 
107 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
108 
109 // Get the new view controller using [segue destinationViewController].
110 
111 // Pass the selected object to the new view controller.
112 
113 }
114 
115 */
116 
117  
118 
119 
120 @end
  1 //
  2 
  3 // YLLeftViewController.m
  4 
  5 // MMDrawerController
  6 
  7 //
  8 
  9 // Created by yl on 16/6/24.
 10 
 11 // Copyright © 2016年 Itsimple. All rights reserved.
 12 
 13 //
 14 
 15  
 16 
 17 #import "YLLeftViewController.h"
 18 
 19 #import "Masonry.h"
 20 
 21 #import "YLLoginViewController.h"
 22 
 23 #import "MMDrawerController.h"
 24 
 25  
 26 
 27 @interface YLLeftViewController ()
 28 
 29  
 30 
 31 @end
 32 
 33  
 34 
 35 @implementation YLLeftViewController
 36 
 37  
 38 
 39 - (void)viewDidLoad {
 40 
 41 [super viewDidLoad];
 42 
 43  
 44 
 45 [self setHeadView];
 46 
 47 }
 48 
 49  
 50 
 51  
 52 
 53 - (void)setHeadView{
 54 
 55  
 56 
 57 self.view.backgroundColor = [UIColor whiteColor];
 58 
 59  
 60 
 61 UIView * headView = [[UIView alloc] init];
 62 
 63  
 64 
 65 headView.frame = CGRectMake(0, 0, self.view.bounds.size.width, [UIScreen mainScreen].bounds.size.height/5);
 66 
 67  
 68 
 69 headView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"nav"]];
 70 
 71  
 72 
 73 [self.view addSubview:headView];
 74 
 75  
 76 
 77 UIButton * loginButton = [[UIButton alloc] init];
 78 
 79  
 80 
 81 [headView addSubview:loginButton];
 82 
 83  
 84 
 85 [loginButton setTitle:@"登录" forState:UIControlStateNormal];
 86 
 87  
 88 
 89 [loginButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
 90 
 91  
 92 
 93 [loginButton mas_makeConstraints:^(MASConstraintMaker *make) {
 94 
 95  
 96 
 97 make.top.equalTo(self.view).offset( [UIScreen mainScreen].bounds.size.height/10);
 98 
 99 make.left.equalTo(self.view).offset([UIScreen mainScreen].bounds.size.width/5);
100 
101 make.width.equalTo(@50);
102 
103 make.height.equalTo(@20);
104 
105  
106 
107 }];
108 
109  
110 
111 [loginButton addTarget:self action:@selector(loginButtonClick) forControlEvents:UIControlEventTouchUpInside];
112 
113  
114 
115  
116 
117 }
118 
119  
120 
121  
122 
123  
124 
125 - (void)loginButtonClick{
126 
127  
128 
129 YLLoginViewController * lv = [[YLLoginViewController alloc] init];
130 
131  
132 
133 MMDrawerController * mmdc = (MMDrawerController *)[UIApplication sharedApplication].keyWindow.rootViewController;
134 
135  
136 
137  
138 
139 [mmdc toggleDrawerSide:MMDrawerSideLeft animated:YES completion:^(BOOL finished) {
140 
141  
142 
143 [(UINavigationController *)mmdc.centerViewController pushViewController:lv animated:YES];
144 
145  
146 
147  
148 
149 }];
150 
151 }
152 
153  
154 
155 - (void)didReceiveMemoryWarning {
156 
157 [super didReceiveMemoryWarning];
158 
159 // Dispose of any resources that can be recreated.
160 
161 }
162 
163  
164 
165  
166 
167 @end
  1 //
  2 
  3 // YLLeftTableViewController.m
  4 
  5 // MMDrawerController
  6 
  7 //
  8 
  9 // Created by yl on 16/6/24.
 10 
 11 // Copyright © 2016年 Itsimple. All rights reserved.
 12 
 13 //
 14 
 15  
 16 
 17 #import "YLLeftTableViewController.h"
 18 
 19 #import "Masonry.h"
 20 
 21 #import "YLLoginViewController.h"
 22 
 23 #import "MMDrawerController.h"
 24 
 25  
 26 
 27 @interface YLLeftTableViewController ()
 28 
 29  
 30 
 31 @property(nonatomic,weak)UIImageView *iconImage;
 32 
 33  
 34 
 35 @end
 36 
 37  
 38 
 39 @implementation YLLeftTableViewController
 40 
 41  
 42 
 43 - (void)viewDidLoad {
 44 
 45 [super viewDidLoad];
 46 
 47  
 48 
 49  
 50 
 51 [self setHeadView];
 52 
 53  
 54 
 55 }
 56 
 57  
 58 
 59  
 60 
 61  
 62 
 63 - (void)setHeadView{
 64 
 65  
 66 
 67 UIView * headView = [[UIView alloc] init];
 68 
 69  
 70 
 71 headView.frame = CGRectMake(0, 0, self.tableView.bounds.size.width, [UIScreen mainScreen].bounds.size.height/5);
 72 
 73  
 74 
 75 self.tableView.tableHeaderView = headView;
 76 
 77  
 78 
 79 self.tableView.tableHeaderView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"nav"]];
 80 
 81  
 82 
 83 UILabel *lb = [[UILabel alloc] init];
 84 
 85  
 86 
 87 lb.text = @"用户已登录";
 88 
 89  
 90 
 91 [headView addSubview:lb];
 92 
 93  
 94 
 95 [lb mas_makeConstraints:^(MASConstraintMaker *make) {
 96 
 97  
 98 
 99 make.top.equalTo(self.view).offset( [UIScreen mainScreen].bounds.size.height/10);
100 
101 make.left.equalTo(self.view).offset([UIScreen mainScreen].bounds.size.width/5);
102 
103 make.width.equalTo(@100);
104 
105 make.height.equalTo(@20);
106 
107  
108 
109 }];
110 
111  
112 
113 }
114 
115  
116 
117  
118 
119 - (void)didReceiveMemoryWarning {
120 
121 [super didReceiveMemoryWarning];
122 
123  
124 
125 }
126 
127  
128 
129  
130 
131  
132 
133 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
134 
135  
136 
137 return 0;
138 
139 }
140 
141  
142 
143 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
144 
145  
146 
147 return 0;
148 
149 }
150 
151  
152 
153  
154 
155  
156 
157 
158 @end
  1 //
  2 
  3 // YLLoginViewController.m
  4 
  5 // MMDrawerController
  6 
  7 //
  8 
  9 // Created by yl on 16/6/24.
 10 
 11 // Copyright © 2016年 Itsimple. All rights reserved.
 12 
 13 //
 14 
 15  
 16 
 17 #import "YLLoginViewController.h"
 18 
 19 #import "MMDrawerController.h"
 20 
 21 #import "Masonry.h"
 22 
 23 #import "YLLeftTableViewController.h"
 24 
 25 #import "YLNavigationController.h"
 26 
 27 #import "YLHomeViewController.h"
 28 
 29  
 30 
 31 @interface YLLoginViewController ()
 32 
 33  
 34 
 35 @property (nonatomic,strong) UITextField *tf_usename;
 36 
 37 @property (nonatomic,strong) UITextField *tf_password;
 38 
 39  
 40 
 41 @end
 42 
 43  
 44 
 45 @implementation YLLoginViewController
 46 
 47  
 48 
 49 - (void)viewDidLoad {
 50 
 51 [super viewDidLoad];
 52 
 53  
 54 
 55 [self setNavBar];
 56 
 57  
 58 
 59 [self setSubViews];
 60 
 61  
 62 
 63 }
 64 
 65  
 66 
 67  
 68 
 69 - (void)setNavBar{
 70 
 71  
 72 
 73 self.navigationItem.title = @"用户登录";
 74 
 75  
 76 
 77 UIBarButtonItem *barBtn = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"button.png"] style:0 target:self action:@selector(leftItemClick)];
 78 
 79  
 80 
 81 self.navigationItem.leftBarButtonItem = barBtn;
 82 
 83  
 84 
 85 }
 86 
 87  
 88 
 89  
 90 
 91 - (void)setSubViews{
 92 
 93 self.view.backgroundColor = [UIColor whiteColor];
 94 
 95 UIButton *loginBtn = [[UIButton alloc] init];
 96 
 97 loginBtn.backgroundColor = [UIColor lightGrayColor];
 98 
 99 [loginBtn setTitle:@"登录" forState:UIControlStateNormal];
100 
101 [loginBtn setBackgroundImage:[UIImage imageNamed:@"nav"] forState:UIControlStateNormal];
102 
103 [self.view addSubview:loginBtn];
104 
105 [loginBtn mas_makeConstraints:^(MASConstraintMaker *make) {
106 
107 make.top.equalTo(self.view).offset(150);
108 
109 make.left.equalTo(self.view).offset(70);
110 
111 make.right.equalTo(self.view).offset(-70);
112 
113 make.height.equalTo(@35);
114 
115 }];
116 
117  
118 
119 [loginBtn addTarget:self action:@selector(loginBtnClick) forControlEvents:UIControlEventTouchUpInside];
120 
121  
122 
123 }
124 
125  
126 
127  
128 
129 - (void)loginBtnClick{
130 
131 YLNavigationController *centerNav = [[YLNavigationController alloc] initWithRootViewController:[[YLHomeViewController alloc] init]];
132 
133  
134 
135 YLLeftTableViewController *leftTableVC = [[YLLeftTableViewController alloc] init];
136 
137  
138 
139 MMDrawerController *mmdc = [[MMDrawerController alloc] initWithCenterViewController:centerNav leftDrawerViewController: leftTableVC];
140 
141  
142 
143 [mmdc setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];
144 
145  
146 
147 [mmdc setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];
148 
149  
150 
151 UIApplication *application = [UIApplication sharedApplication];
152 
153  
154 
155 application.keyWindow.rootViewController = mmdc;
156 
157  
158 
159 [mmdc toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
160 
161  
162 
163 }
164 
165  
166 
167  
168 
169 - (void)leftItemClick{
170 
171  
172 
173 MMDrawerController * mmdc = (MMDrawerController *)[UIApplication sharedApplication].keyWindow.rootViewController;
174 
175  
176 
177 [mmdc toggleDrawerSide:MMDrawerSideLeft animated:YES completion:^(BOOL finished) {
178 
179  
180 
181 [(UINavigationController *)mmdc.centerViewController popToRootViewControllerAnimated:YES];
182 
183  
184 
185 }];
186 
187  
188 
189  
190 
191 }
192 
193  
194 
195  
196 
197 - (void)didReceiveMemoryWarning {
198 
199 [super didReceiveMemoryWarning];
200 
201 // Dispose of any resources that can be recreated.
202 
203 }
204 
205  
206 
207 /*
208 
209 #pragma mark - Navigation
210 
211  
212 
213 // In a storyboard-based application, you will often want to do a little preparation before navigation
214 
215 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
216 
217 // Get the new view controller using [segue destinationViewController].
218 
219 // Pass the selected object to the new view controller.
220 
221 }
222 
223 */
224 
225  
226 
227 
228 @end
 1 //
 2 
 3 // YLNavigationController.m
 4 
 5 // MMDrawerController
 6 
 7 //
 8 
 9 // Created by yl on 16/6/24.
10 
11 // Copyright © 2016年 Itsimple. All rights reserved.
12 
13 //
14 
15  
16 
17 #import "YLNavigationController.h"
18 
19  
20 
21 @interface YLNavigationController ()
22 
23  
24 
25 @end
26 
27  
28 
29 @implementation YLNavigationController
30 
31  
32 
33 - (void)viewDidLoad {
34 
35 [super viewDidLoad];
36 
37  
38 
39 [self setNavBar];
40 
41  
42 
43  
44 
45 }
46 
47  
48 
49 - (void)setNavBar{
50 
51  
52 
53 [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"nav"] forBarMetrics:UIBarMetricsDefault];
54 
55  
56 
57 self.navigationBar.tintColor = [UIColor whiteColor];
58 
59  
60 
61 [self.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
62 
63 }
64 
65  
66 
67 - (void)didReceiveMemoryWarning {
68 
69 [super didReceiveMemoryWarning];
70 
71 // Dispose of any resources that can be recreated.
72 
73 }
74 
75  
76 
77 /*
78 
79 #pragma mark - Navigation
80 
81  
82 
83 // In a storyboard-based application, you will often want to do a little preparation before navigation
84 
85 - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
86 
87 // Get the new view controller using [segue destinationViewController].
88 
89 // Pass the selected object to the new view controller.
90 
91 }
92 
93 */
94 
95  
96 
97 
98 @end

 

 

 

 

 

 

转载于:https://www.cnblogs.com/ievening/p/5613335.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值