Jplane 2019-06-29
侧滑菜单已经成为app一个极常用的设计,不管是事务类,效率类还是生活类app。侧滑菜单因Path 2.0和Facebook为开发者熟知,国内目前也有很多流行app用到了侧滑菜单,比如QQ、网易邮箱、知乎等等。
IOS官方并没有提供类似于侧滑栏之类的组件,所以我们需要自己写一个侧滑栏控件,为了不要重复造轮子,我在github上找到了一个使用简单方便,新手容易入手的侧滑菜单控件,Demo下载地址:这是一个我的iOS交流群:624212887,群文件自行下载,不管你是小白还是大牛热烈欢迎进群 ,分享面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。
下面我们就是使用上面的控件,来做一个侧滑栏的小Demo,来教大家快速入门侧滑栏控件。
Demo界面演示如下:
在viewDidLoad方法中设置SWRevealViewController中的panGestureRecognizer方法,即可实现在主界面上滑动就可以出现左侧或者右侧菜单。设置revealToggle:方法就可以实现点击进行左边菜单和中间界面的切换。设置rightRevealToggle:方法就可以实现右边菜单和中间界面的切换。下面就是中间界面的相关代码:
//注册该页面可以执行滑动切换 SWRevealViewController *revealController = self.revealViewController; [self.view addGestureRecognizer:revealController.panGestureRecognizer]; // 注册该页面可以执行点击切换 [leftBtn addTarget:revealController action:@selector(revealToggle:) forControlEvents:UIControlEventTouchUpInside]; [rightBtn addTarget:revealController action:@selector(rightRevealToggle:) forControlEvents:UIControlEventTouchUpInside];
左侧菜单栏是由一个UITableView组成的,我们在每个cell的点击方法中执行 [revealViewController pushFrontViewController:viewController animated:YES];切换中间界面的操作。代码如下:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ SWRevealViewController *revealViewController = self.revealViewController; UIViewController *viewController; switch (indexPath.row) { case 0: viewController = [[CenterView1Controller alloc] init]; break; case 1: viewController = [[CenterView2Controller alloc] init]; break; default: break; } [revealViewController pushFrontViewController:viewController animated:YES]; }
这里主要演示左侧菜单栏,这里就不做过多描述。就以一个简单的ViewController代替。
详见代码注释:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //左侧菜单栏 LeftViewController *leftViewController = [[LeftViewController alloc] init]; //首页 CenterView1Controller *centerView1Controller = [[CenterView1Controller alloc] init]; //右侧菜单栏 RightViewController *rightViewController = [[RightViewController alloc] init]; SWRevealViewController *revealViewController = [[SWRevealViewController alloc] initWithRearViewController:leftViewController frontViewController:centerView1Controller]; revealViewController.rightViewController = rightViewController; //浮动层离左边距的宽度 revealViewController.rearViewRevealWidth = 230; // revealViewController.rightViewRevealWidth = 230; //是否让浮动层弹回原位 //mainRevealController.bounceBackOnOverdraw = NO; [revealViewController setFrontViewPosition:FrontViewPositionLeft animated:YES]; self.window.rootViewController = revealViewController; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }
接下来准备使用这个界面作为主框架,写一系列关于iOS动画的总结 和 facebook开源动画项目pop动画的使用的博客。敬请期待。
Demo下载地址:这是一个我的iOS交流群:624212887,群文件自行下载,不管你是小白还是大牛热烈欢迎进群 ,分享面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。——点击:加入
如果觉得对你还有些用,就关注小编+喜欢这一篇文章。你的支持是我继续的动力。
下篇文章预告:iOS动画的总结
文章来源于网络,如有侵权,请联系小编删除。