在iOS开发中经常碰到类似QQ界面中左滑显示视图的界面,实现这种效果的话可以用一个第三方(RESideMenu)RESideMenu是github上比较出名的一个开源库,主要是实现侧滑菜单.
我们想实现这样的功能:
点击导航栏左边按钮,当前内容视图能够向右滑出一半,于此同时,屏幕左侧会出现一个菜单视图,效果如下图:
话不多说上代码
首先用cocopods 或者在项目中导入第三方RESideMenu
AppDelegate.h中:导入头文件 RESideMenu.h
@property(strong,nonatomic)RESideMenu *sideMenu;
AppDelegate.m中:
#define SCREEN_W [UIScreen mainScreen].bounds.size.width
///屏幕高度的宏
#define SCREEN_H [UIScreen mainScreen].bounds.size.height
///适配x轴的宏
#define FIT_X(w) (SCREEN_W / 375. * (w))
///适配y轴的宏
#define FIT_Y(h) (SCREEN_H / 667. * (h))
@property (nonatomic,strong)LeftViewController *leftVC; //左侧菜单控制器
@property(nonatomic,strong)ViewController *vc;
@property(nonatomic,strong)UINavigationController *nav;
//左侧菜单
-(LeftViewController *)leftVC{
if (!_leftVC) {
_leftVC = [[LeftViewController alloc]init];
}
return _leftVC;
}
//导航控制器
-(UINavigationController *)nav{
if (!_nav) {
_nav=[[UINavigationController alloc]initWithRootViewController:self.vc];
}
return _nav;
}
//主控制器
-(ViewController *)vc{
if (!_vc) {
_vc = [[ViewController alloc]init];
_vc.view.backgroundColor=[UIColor whiteColor];
}
return _vc;
}
//侧滑控制器
-(RESideMenu *)sideMenu{
if (!_sideMenu) {
//左滑视图
_sideMenu = [[RESideMenu alloc]initWithContentViewController:self.nav leftMenuViewController:self.leftVC rightMenuViewController:nil];
//设置内容试图不可缩放
_sideMenu.scaleContentView = NO;
//设置左滑视图与主界面的间隔
_sideMenu.contentViewInPortraitOffsetCenterX = FIT_X(100);
}
return _sideMenu;
}
self.window.rootViewController=self.sideMenu;
ViewController.m中
viewDidLoad:
//设置导航栏左按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithTitle:@"左滑" style:UIBarButtonItemStylePlain target:self action:@selector(headBtnHandle:)];
//按钮触发方法
-(void)headBtnHandle:(id)sender{
AppDelegate *appDele =(AppDelegate *) [UIApplication sharedApplication].delegate;
[appDele.sideMenu presentLeftMenuViewController];
}
网友评论