仿手机QQ下拉菜单框架(FFDropDownMenu) -- 基本使用

来源:互联网 发布:微测试源码 编辑:程序博客网 时间:2024/05/16 14:01

最近写了这个框架: FFDropDownMenu,类似手机QQ下拉菜单。
github地址:
https://github.com/chenfanfang/FFDropDownMenu

更多的使用方法的demo地址:
https://github.com/chenfanfang/CollectionsOfExample

更多的使用方法的博客地址:
http://www.jianshu.com/notebooks/5552428/latest

先浏览下效果图:


仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

pod  FFDropDownMenu

Manually【手动导入】

  • Drag all source files under floder FFDropDownMenu to your project.【将FFDropDownMenu文件夹中的所有源代码拽入项目中】

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenuBasedCell.h        FFDropDownMenuBasedCell.mFFDropDownMenuBasedModel.h       FFDropDownMenuBasedModel.mFFDropDownMenuCell.h             FFDropDownMenuCell.mFFDropDownMenuModel.h            FFDropDownMenuModel.mFFDropDownMenuTriangleView.h     FFDropDownMenuTriangleView.mFFDropDownMenuView.h             FFDropDownMenuView.m

Basic Usage 【基本的使用】

先导入头文件

//若使用CocoaPods#import <FFDropDownMenuView.h>//若使用手动导入#import "FFDropDownMenuView.h"

创建一个strong的下拉菜单属性

/** 下拉菜单 */@property (nonatomic, strong) FFDropDownMenuView *dropDownMenu;

创建菜单模型数组

//FFDropDownMenuModel.h/** *  快速实例化一个下拉菜单模型 * *  @param menuItemTitle    菜单选项的标题 *  @param menuItemIconName 菜单选项的图标名称 *  @param menuBlock        点击的回调block * *  @return 实例化的菜单模型 */+ (instancetype)ff_DropDownMenuModelWithMenuItemTitle:(NSString *)menuItemTitle menuItemIconName:(NSString *)menuItemIconName menuBlock:(FFMenuBlock)menuBlock;
/** 获取下拉菜单模型数组 */- (NSArray *)getDropDownMenuModelsArray {    __weak typeof(self)weakSelf = self;    //菜单模型0    FFDropDownMenuModel *menuModel0 = [FFDropDownMenuModel ff_DropDownMenuModelWithMenuItemTitle:@"Twitter" menuItemIconName:@"menu0" menuBlock:^{        UIViewController *vc = [UIViewController new];        [weakSelf.navigationController pushViewController:vc animated:YES];    }];    //菜单模型1    FFDropDownMenuModel *menuModel1 = [FFDropDownMenuModel ff_DropDownMenuModelWithMenuItemTitle:@"Line" menuItemIconName:@"menu1" menuBlock:^{        //Do Something    }];    //菜单模型2    FFDropDownMenuModel *menuModel2 = [FFDropDownMenuModel ff_DropDownMenuModelWithMenuItemTitle:@"QQ" menuItemIconName:@"menu2"  menuBlock:^{       //Do Something    }];    //菜单模型3    FFDropDownMenuModel *menuModel3 = [FFDropDownMenuModel ff_DropDownMenuModelWithMenuItemTitle:@"QZone" menuItemIconName:@"menu3"  menuBlock:^{        //Do Something    }];    //菜单模型4    //...................    NSArray *menuModelArr = @[menuModel0, menuModel1, menuModel2, menuModel3......];    return menuModelArr;}

创建下拉菜单方式1

/** 创建下拉菜单方式1 */- (void)createDropdownMenuMethodOne {    //若使用默认CGFloat值     请使用 FFDefaultFloat    //若使用默认CGSize值      请使用 FFDefaultSize    //若使用默认Cell值        请使用 FFDefaultCell    //若使用默认Color值       请使用 FFDefaultColor    //若使用默认ScaleType值   请使用 FFDefaultMenuScaleType    NSArray *menuModelsArr = [self getDropDownMenuModelsArray];    self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145 eachItemHeight:40 menuRightMargin:10 triangleRightMargin:20];    //若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下    /*    self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight;    self.dropDownMenu...... = ......;    [self.dropDownMenu setup];     */}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */- (void)createDropdownMenuMethodTwo {    NSArray *menuModelsArr = [self getDropDownMenuModelsArray];    self.dropDownMenu = [FFDropDownMenuView new];    //进行属性的赋值    //若使用默认CGFloat值     请使用 FFDefaultFloat          、或者无需进行赋值    //若使用默认CGSize值      请使用 FFDefaultSize           、或者无需进行赋值    //若使用默认Cell值        请使用 FFDefaultCell           、或者无需进行赋值    //若使用默认Color值       请使用 FFDefaultColor          、或者无需进行赋值    //若使用默认ScaleType值   请使用 FFDefaultMenuScaleType  、或者无需进行赋值    /** 下拉菜单模型数组 */    self.dropDownMenu.menuModelsArray = menuModelsArr;    /** cell的类名 */    self.dropDownMenu.cellClassName = FFDefaultCell;    /** 菜单的宽度(若不设置,默认为 150) */    self.dropDownMenu.menuWidth = 145;    /** 菜单的圆角半径(若不设置,默认为5) */    self.dropDownMenu.menuCornerRadius = FFDefaultFloat;    /** 每一个选项的高度(若不设置,默认为40) */    self.dropDownMenu.eachMenuItemHeight = 40;    /** 菜单条离屏幕右边的间距(若不设置,默认为10) */    self.dropDownMenu.menuRightMargin = 10;    /** 三角形颜色(若不设置,默认为白色) */    self.dropDownMenu.triangleColor = [UIColor whiteColor];    /** 三角形相对于keyWindow的y值,也就是相对于屏幕顶部的y值(若不设置,默认为64) */    self.dropDownMenu.triangleY = FFDefaultFloat;    /** 三角形距离屏幕右边的间距(若不设置,默认为20) */    self.dropDownMenu.triangleRightMargin = FFDefaultFloat;    /** 三角形的size  size.width:代表三角形底部边长,size.Height:代表三角形的高度(若不设置,默认为CGSizeMake(15, 10)) */    self.dropDownMenu.triangleSize = FFDefaultSize;    /** 背景颜色开始时的透明度(还没展示menu的透明度)(若不设置,默认为0.02) */    self.dropDownMenu.bgColorbeginAlpha = 0;    /** 背景颜色结束的的透明度(menu完全展示的透明度)(若不设置,默认为0.2) */    self.dropDownMenu.bgColorEndAlpha = 0.4;    /** 动画效果时间(若不设置,默认为0.2) */    self.dropDownMenu.animateDuration = FFDefaultFloat;    /** 菜单的伸缩类型 */    self.dropDownMenu.menuScaleType = FFDefaultMenuScaleType;    //所有属性赋值完 一定要调用 setup    [self.dropDownMenu setup];}

显示菜单

    [self.dropDownMenu showMenu];

期待

  • 如果在使用过程中遇到BUG,希望你能在 简书私信我,或者在我简书专题的博客进行评论。谢谢(或者尝试下载最新的框架代码看看BUG修复没有)
  • 如果在使用过程中发现功能不够用,希望你能在 简书私信我,或者在我简书专题的博客进行评论。我非常想为这个框架增加更多好用的功能,谢谢
  • 如果你想和我一起完善FFDropDownMenu,请Pull Requests我


文/chenfanfang(简书作者)
原文链接:http://www.jianshu.com/p/56f2f2dd4c59
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手机上的短信图标没了怎么办 qq密保手机被别人换了怎么办 苹果六手机很卡网络不给力怎么办 堡垒之夜卡在载入界面怎么办 登录新福建一直说网络不给力怎么办 开发游戏平台给了钱不给东西怎么办 代号英雄与服务器断开连接了怎么办 千牛聊天页面买家信息不显示怎么办 秒拍存草稿箱的视频没了怎么办? 登录山东掌厅出现服务器错误怎么办 微信号被多人投诉被限制登录怎么办 联想平板电脑开机密码忘记了怎么办 申请的qq没登录忘了账号怎么办 炫舞时代由于网络原因登不上怎么办 qq申请太多进不了热聊怎么办 手机号申请的微信号被盗了怎么办 买菜别人少找了钱不还怎么办 在掌上英雄联盟买皮肤买错区怎么办 win8我的电脑图标没了怎么办 英雄联盟老是卡在安全扫描怎么办 英雄联盟活动送皮肤没送怎么办 电脑换完系统有些页面打不开怎么办 王卡助手交手机费页面打不开怎么办 在浏览器上打不开路由器页面怎么办 英雄联盟读条的时候自动关机怎么办 手机的位置信息开不了怎么办呢 滴滴车主接到乘客返回路程要怎么办 移动换话费积分是发什么短信怎么办 手机店积分换手机被贷款怎么办 心悦俱乐部礼包已过期是怎么办 心悦兑换的东西不是账号绑定怎么办 心悦会员绑定的手机号不用了怎么办 想在京东商城开个网店怎么办呢 京东买了东西收货了不想要了怎么办 京东转卖的商品有问题怎么办 如果衣服下架了然后有退货怎么办 想买二手车可没有懂车的人怎么办 买车的时候异地车牌回家怎么办 天猫下单显示下单人数太多券怎么办 英雄联盟进入游戏后无限崩溃怎么办 打开电视显示百度影棒打不开怎么办