iOS-一句代码为你的项目集成滑动菜单

效果图

SLSlideMenu.gif

demo地址在文章最后

使用说明

空白menu,给menu添加子控件可通过代理方法

    将SLSlideMenu文件夹拖入项目
调用
   1> #import "SLSlideMenu.h"
   2> [SLSlideMenu slideMenuWithFrame:self.view.frame
                             delegate:self
                            direction:SLSlideMenuDirectionLeft
                          slideOffset:250
                  allowSwipeCloseMenu:YES
                             aboveNav:YES
                           identifier:@"left"];
   或者在viewdidload中:
   [SLSlideMenu prepareSlideMenuWithFrame:self.view.frame
                                 delegate:self
                                direction:SLSlideMenuSwipeDirectionLeft
                              slideOffset:300
                  allowSlideMenuSwipeShow:YES
                      allowSwipeCloseMenu:YES
                                 aboveNav:YES
                               identifier:@"swipeLeft"];
自定义menu子控件:
   1> 遵守协议<SLSlideMenuProtocol>
   2> 实现代理方法:将子控件添加到menuView
    - (void)slideMenu:(SLSlideMenu *)slideMenu prepareSubviewsForMenuView:(UIView *)menuView {
    UILabel *lb = [[UILabel alloc] initWithFrame:CGRectMake(20, 50, 100, 30)];
    lb.text = @"自定义控件";
    lb.font = [UIFont systemFontOfSize:12];
    lb.textColor = [UIColor darkGrayColor];
    [menuView addSubview:lb];
   }

在自定义子控件时
如果一个方向只有一个弹窗可根据direction区分menu

if (slideMenu.direction == SLSlideMenuDirectionTop) {
    UILabel *lb = [[UILabel alloc] initWithFrame:CGRectMake(10, 50, 100, 30)];
    lb.text = @"自定义控件1";
    lb.font = [UIFont systemFontOfSize:12];
    lb.textColor = [UIColor darkGrayColor];
    [menuView addSubview:lb];
}

if (slideMenu.direction == SLSlideMenuDirectionBottom) {
    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(70, 200, 100, 40)];
    btn.backgroundColor = [UIColor purpleColor];
    [btn addTarget:self  action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];
    [menuView addSubview:btn];
}

如果一个方向有多个弹窗,可设置identifier来区分menu

if ([slideMenu.identifier isEqualToString:@"left"]) {
    menuView.backgroundColor = [UIColor yellowColor];
}
if ([slideMenu.identifier isEqualToString:@"swipeLeft"]) {
    menuView.backgroundColor = [UIColor greenColor];
}

接口说明

1> 点击弹出的场景

/**
 * 创建menu视图。此方式一般用在点击弹出的场景,不支持手势滑出。
 *param frame 如果不要盖住nav 就传self.view.frame;如果要盖住nav就传CGRectMake(0, 64, screenW, screenH)
 *param delegate 代理 可通过设置代理来配置menu的子控件
 *param direction menu弹出方位。SLSlideMenuSwipeDirectionRight代表从右边弹出
 *param slideOffset menu的宽度/高度
 *param allowSwipeCloseMenu 是否允许手势关闭
 *param aboveNav 是否盖住nav
 *param identifier 标识符 可以通过设置进行唯一标识
 */
+ (void)slideMenuWithFrame:(CGRect)frame
                  delegate:(id <SLSlideMenuProtocol> )delegate
                 direction:(SLSlideMenuDirection)direction
               slideOffset:(CGFloat)slideOffset
       allowSwipeCloseMenu:(BOOL)isAllow
                  aboveNav:(BOOL)isAbove
                identifier:(NSString * )identifier;

2> 手势滑出的场景

/**
 * 配置menu视图。可在viewdidload中,此种方式可通过左滑右滑手势呼出。
 *param frame 如果不要盖住nav 就传self.view.frame;如果要盖住nav就传CGRectMake(0, 64, screenW, screenH)
 *param delegate 代理 可通过设置代理来配置menu的子控件
 *param direction 手势滑出方位。SLSlideMenuSwipeDirectionRight代表从右边滑出
 *param slideOffset menu的宽度/高度
 *param allowSlideMenuSwipeShow 是否允许手势滑出
 *param allowSwipeCloseMenu 是否允许手势关闭
 *param aboveNav 是否盖住nav
 *param identifier 标识符 可以通过设置进行唯一标识
 */
+ (void)prepareSlideMenuWithFrame:(CGRect)frame
                         delegate:(id <SLSlideMenuProtocol> )delegate
                        direction:(SLSlideMenuSwipeDirection)direction
                      slideOffset:(CGFloat)slideOffset
          allowSlideMenuSwipeShow:(BOOL)isAllowSwipeShow
              allowSwipeCloseMenu:(BOOL)isAllowSwipeCloseMenu
                         aboveNav:(BOOL)isAbove
                       identifier:(NSString *)identifier;

github 地址 SLSlideMenu

如果觉得好用记得星星鼓励~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,283评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 46,884评论 22 665
  • a君是个很简单的人 每天都想着上班下班吃饭睡觉玩 然而 有一天他发现 自己原来是如此轻松的活着 所以 他决定 便继...
    Kammy1027阅读 199评论 0 0
  • 世界并不无趣, 只是需要有趣的活法。 我对你最大的期望, 就是做一个快乐的人! 在成为多么有能力,多么卓越,多么出...
    赵舟舟阅读 198评论 1 0
  • 晚风吹拂 我站在天台边缘 漫天飞舞的雪花坠落在我的眼前 这片片雪花带来冬日的寒意 模糊的记忆不知多少雪花飘落在胸前...
    暖欣如你阅读 205评论 0 0