Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - applespen/FFDropDownMenu: A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。 · GitHub
Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - applespen/FFDropDownMenu: A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。 · GitHub
Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - applespen/FFDropDownMenu: A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。 · GitHub
Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - applespen/FFDropDownMenu: A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。 · GitHub
Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - applespen/FFDropDownMenu: A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。 · GitHub
Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - applespen/FFDropDownMenu: A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。 · GitHub
Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - applespen/FFDropDownMenu: A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。 · GitHub
Skip to content

Repository files navigation

FFDropDownMenu

  • 下拉菜单框架 (drop-down menu framework)
  • 自由度高,可以自定义菜单的样式 (High degree of freedom, you can custom the menu style that you want)


####默认样式 (Default menu style) default menu style

####自定义菜单样式 (Custom menu style)

custom menu style

###你可以自定义你想要的菜单样式 (you can suctom the menu style that you want)



FFDropDownMenu的基本使用(based usage)

####先浏览下效果图(Browsing the effect picture first)

仿手机QQ下拉菜单.gif

仿手机QQ下拉菜单.png

Installation【安装】

From CocoaPods【使用CocoaPods】

podFFDropDownMenu

Manually【手动导入】

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

  • FFDropDownMenu文件夹里面的文件有

FFDropDownMenu.h
FFDropDownMenuBasedCell.h FFDropDownMenuBasedCell.m
FFDropDownMenuBasedModel.h FFDropDownMenuBasedModel.m
FFDropDownMenuCell.h FFDropDownMenuCell.m
FFDropDownMenuModel.h FFDropDownMenuModel.m
FFDropDownMenuTriangleView.h FFDropDownMenuTriangleView.m
FFDropDownMenuView.h FFDropDownMenuView.m

##【基本的使用】

先导入头文件

//若使用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值 请使用 FFDefaultMenuScaleTypeNSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
self.dropDownMenu = [FFDropDownMenuView ff_DefaultStyleDropDownMenuWithMenuModelsArray:menuModelsArr menuWidth:145eachItemHeight:40menuRightMargin:10triangleRightMargin:20];
//若还需要对别的属性进行赋值,则可以再对别的属性进行赋值,最后一定要调用setup方法。如下/* self.dropDownMenu.menuScaleType = FFDropDownMenuViewScaleType_TopRight; self.dropDownMenu...... = ......; [self.dropDownMenu setup];*/
}

创建下拉菜单方式2

/** 创建下拉菜单方式2 */
- (void)createDropdownMenuMethodTwo {
NSArray *menuModelsArr = [selfgetDropDownMenuModelsArray];
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];


若觉得框架自带的菜单样式不是自己喜欢的,或者需要给菜单选项添加更多的子控件,可以通过自定义菜单选项来实现,具体使用方式,点击下面两个链接查看即可。(If you don't like the default menu style ,or need add more view in menu item, you can custom the menu style.The links below will guide you to custom menu style.)

仿手机QQ下拉菜单.png



仿手机QQ下拉菜单.png



版本更新

###2016-11-13

  • 增加了几个代理方法
/** 若是自定义cell样式的,可以在这个代理方法中稍微小修改cell的样式,比如是否需要下划线之类的 */
- (void)ffDropDownMenuView:(FFDropDownMenuView *)menuView WillAppearMenuCell:(FFDropDownMenuBasedCell *)menuCell index:(NSInteger)index;
- (void)ffDropDownMenuViewWillAppear;
- (void)ffDropDownMenuViewWDidAppear;
- (void)ffDropDownMenuViewWillDisappear;
- (void)ffDropDownMenuViewWDidDisappear;


期待

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

##About me

About

A kind of drop-down menu, You can custom menu style that you want.DropDownMenu 下拉菜单,你可以自定义菜单样式,自由性高。

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages