DKPullDownMenu 1.0.7

DKPullDownMenu 1.0.7

TestsTested
LangLanguage Obj-CObjective C
License MIT
ReleasedLast Release Nov 2017

Maintained by bingozb.



  • By
  • bingozb

蛋壳下拉菜单


效果图

img

安装

  • 支持cocoapods安装
pod 'DKPullDownMenu'
  • 或者Clone or Download,将DKPullDownMenu文件夹整个拖到你的项目中

使用

引用头文件

#import "DKPullDownMenu.h"

构建选项

  • 单选
// title : 菜单选项主标题
// subTitles : 弹出菜单子选项
DKPullDownMenuSingleSelectItem *singleItem = [DKPullDownMenuSingleSelectItem itemWithTitle:@"Single" subTitles:@[@"Single A",@"Single B"]];

// 根据需求给属性赋值
// singleItem.optionMenuHeight = 200; // 弹出菜单总高度
// singleItem.optionRowHeight = 50; // 弹出菜单行高度
// singleItem.titleSelectColor = [UIColor redColor]; // 标题字体选中颜色
// singleItem.normalImage = [UIImage imageNamed:@"titleBtn_down"]; // 标题按钮未选中状态图片
// singleItem.selectImage = [UIImage imageNamed:@"titleBtn_up"]; // 标题按钮选中状态图片
// singleItem.singleSelectImage = [UIImage imageNamed:@"ic_selected"]; // 子菜单选中图片
  • 多选
DKPullDownMenuMultiSelectItem *multiItem = [DKPullDownMenuMultiSelectItem itemWithTitle:@"Mulit" subTitles:self.multiSubTitles];

// 根据需求给属性赋值
// multiItem.optionMenuHeight = 300;
// multiItem.optionRowHeight = 80;
// multiItem.multiNormalImage = [UIImage imageNamed:@"ic_unselected"]; // 多选行的普通状态图片
// multiItem.multiSelectImage = [UIImage imageNamed:@"ic_selected"]; // 多选行的选中状态图片
// multiItem.confirmBackgroundColor = [UIColor redColor]; // 确定按钮的背景颜色
 multiItem.subTitleTotal = @"Total"; // "全选"行的文字
 multiItem.confirmTitle = @"Confirm"; // 底部确定按钮的标题
// multiItem.confirmCornerRadius = 5.f; // 底部确定按钮的圆角半径
  • 自定义

当提供的单选和多选以及暴露的属性无法满足需求时,可以完全自定义菜单。

// 构建一个自定义的控制器 选择的逻辑代码都写在该控制器中
 DKCustomDemoViewController *customVc = [[DKCustomDemoViewController alloc] init];
 // 用自定义的控制器初始化一个自定义的item
 DKPullDownMenuCustomItem *customItem = [DKPullDownMenuCustomItem itemWithTitle:@"Custom" customViewController:customVc];
// customItem.optionMenuHeight = 400;
  • 自定义的控制器选中了结果后通知菜单
/*
   DKPullDownMenuTitleDidUpdatedNotification : 菜单更新通知
   userInfo : 字典
      - key   : 菜单选项标题 
      - value : 选择的结果,可以是字符串,也可以是字符串数组
 */
[[NSNotificationCenter defaultCenter] postNotificationName:DKPullDownMenuTitleDidUpdatedNotification object:nil userInfo:@{@"customItem":@"choose value"}];
  • 有时候只想更改菜单的标题,不想菜单回调代理方法,通知的userInfo需要传多一对键值
// kPullDownMenuEnableCallBack 不传默认为YES
userInfo:@{@"customItem":@"choose value", kPullDownMenuEnableCallBack:@(NO)}

创建菜单

DKPullDownMenu *menu = [[DKPullDownMenu alloc] initWithFrame:CGRectMake(0, 20, self.view.frame.size.width, 44)];
menu.delegate = self; // 设置代理
self.menu = menu;
[self.view addSubview:menu];
//  添加菜单项
menu.pullDownMenuItems = @[singleItem,multiItem,customItem];

//  设置菜单自定义属性
//  menu.separateLineTopMargin = 10;                    // 分割线距离顶部(底部)的间距
//  menu.coverColor = [UIColor lightGrayColor];         // 设置蒙版颜色
//  menu.separateLineColor = [UIColor lightGrayColor];  // 设置分割线颜色
//  menu.separateLineWidth = 0;                         // 设置分割线宽度
//  menu.headSeparateLineAvailable = NO;                // 是否显示顶部分割线
//  menu.bottomSeparateLineAvailable = YES;             // 是否显示底部分割线

Delegate

  • 遵守协议
<DKPullDownMenuDelegate>
  • 代理方法
/**
 * 菜单全部选中结果回调
 * @param pullDownMenu 下拉菜单
 * @param results 选择的结果集合
 */
- (void)pullDownMenu:(DKPullDownMenu *)pullDownMenu selectedResultsDidUpdated:(NSArray<DKPullDownResult *> *)results
{
 [results enumerateObjectsUsingBlock:^(DKPullDownResult * _Nonnull result, NSUInteger idx, BOOL * _Nonnull stop) {
     NSLog(@"选项:%@ 选择结果:%@",result.title, result.subTitles);
 }];
}

/**
 *  菜单单个选中结果回调
 *  @param pullDownMenu 下拉菜单
 *  @param result 选择的结果
 */
- (void)pullDownMenu:(DKPullDownMenu *)pullDownMenu selectedResultDidUpdated:(DKPullDownResult *)result
{
    NSLog(@"选项:%@ 选择结果:%@",result.title, result.subTitles);
}