在app的开发过程中通常为了增强APP的吸引力会采取一些抽屉的切换特效,今天我们就来尝试一个简单的抽屉特效!
这个抽屉效果由:
1、一个控制ViewC0ntroller
2、一个菜单ViewC0ntroller (可自定义)
3、两个显示ViewC0ntroller(可以进行添加为多个)
组成 用协议等方式进行交互信息传递,就生成了我们这么酷炫的一个抽屉模式!

一、显示ViewC0ntroller
分别设置title 和leftBarButtonItem 用于和菜单ViewC0ntroller进行交互 其中leftBarButtonItem要给一个开关菜单的方法,如下:
[self.navigationController.parentViewController performSelector:@selector(openCloseMenu)];
openCloseMenu是写在控制ViewC0ntroller中控制菜单是否显示
二、菜单ViewC0ntroller
菜单中根据显示的ViewController的个数创建对应个数的按钮 并用协议将按钮的Tag传递给控制的ViewController用于切换心事那一个控制器
三、控制ViewC0ntroller
此控制器用来控制显示ViewController的显示,
1、首先添加菜单控制器
[self setMenu:[[JSMenuViewController alloc]init]]; [self addChildViewController:self.menu]; [self.view addSubview:self.menu.view]; self.menu.degete = self;
2、然后添加显示控制器为ChildViewController;
FirstViewController * first = [[FirstViewController alloc]init]; UINavigationController * nav = [[UINavigationController alloc]initWithRootViewController:first]; SecondViewController * Second = [[SecondViewController alloc]init]; UINavigationController * nav1 = [[UINavigationController alloc]initWithRootViewController:Second]; [self setControllerArray:@[nav,nav1]]; [self setController:nav];
3、然后根据遵守菜单控制器的协议用控制器的xindex 来决定显示哪一个控制器,
[self addChildViewController:controller]; [self.view addSubview:controller.view];
4、而后点击菜单按钮来改变显示控制器的transform从而显示成抽屉打开的样式
if (!_isopen) { self.controller.view.transform = CGAffineTransformMakeTranslation(JWidth - 100, 100); }else{ self.controller.view.transform = CGAffineTransformMakeTranslation(0, 0); }
网友评论