美文网首页
iOS左滑抽屉视图

iOS左滑抽屉视图

作者: Whimer | 来源:发表于2017-11-22 20:27 被阅读0次

    在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];

    }

    相关文章

      网友评论

          本文标题:iOS左滑抽屉视图

          本文链接:https://www.haomeiwen.com/subject/kkbovxtx.html