WMZDropDownMenu实战:仿美团外卖筛选菜单的完整实现步骤

WMZDropDownMenu实战:仿美团外卖筛选菜单的完整实现步骤
WMZDropDownMenu实战仿美团外卖筛选菜单的完整实现步骤【免费下载链接】WMZDropDownMenu一个能几乎实现所有App各种类型筛选菜单的控件,可悬浮,目前已实现闲鱼/美团/Boss直聘/京东/饿了么/淘宝/拼多多/赶集网/美图外卖等等的筛选菜单,可以自由调用代理实现自己想组装的筛选功能和UI,且控件的生命周期自动管理,悬浮自动管理(A control that can implement almost all types of filtering menus of all apps)项目地址: https://gitcode.com/gh_mirrors/wm/WMZDropDownMenuWMZDropDownMenu是一个功能强大的iOS筛选菜单控件能够帮助开发者快速实现各类App中的筛选功能。本文将详细介绍如何使用WMZDropDownMenu实现美团外卖风格的筛选菜单让你的应用拥有专业级的用户体验。准备工作快速集成WMZDropDownMenu要开始使用WMZDropDownMenu首先需要将项目克隆到本地git clone https://gitcode.com/gh_mirrors/wm/WMZDropDownMenu项目中已经包含了美团外卖的示例代码你可以在WMZDropDownMenu/demo/美团外卖/MeiTuanWMDemo.m文件中找到完整实现。第一步创建菜单参数配置首先我们需要创建一个菜单参数对象用于配置菜单的基本样式WMZDropMenuParam *param MenuParam() .wMainRadiusSet(10) .wCollectionViewCellSelectTitleColorSet([UIColor orangeColor]) .wCollectionViewSectionRecycleCountSet(8) .wMaxHeightScaleSet(0.5);这段代码配置了菜单的圆角、选中文字颜色、回收数量和最大高度比例为美团外卖风格的筛选菜单奠定了基础。第二步初始化菜单视图接下来我们需要初始化WMZDropDownMenu并添加到视图中WMZDropDownMenu *menu [[WMZDropDownMenu alloc] initWithFrame:CGRectMake(0, Menu_NavigationBar, Menu_Width, 40) withParam:param]; menu.delegate self; [self.view addSubview:menu];这段代码创建了一个高度为40的菜单视图并设置了代理以便后续处理用户交互。第三步设置菜单标题美团外卖的筛选菜单通常包含综合排序、品类、速度和全部筛选四个选项。我们可以通过实现titleArrInMenu:方法来设置这些标题- (NSArray*)titleArrInMenu:(WMZDropDownMenu *)menu{ return [ {WMZMenuTitleNormal:综合排序,WMZMenuTitleImage:menu_dowm,WMZMenuTitleSelectImage:menu_up}, {WMZMenuTitleNormal:品类,WMZMenuTitleImage:menu_dowm,WMZMenuTitleSelectImage:menu_up}, {WMZMenuTitleNormal:速度,WMZMenuTitleImage:menu_dowm,WMZMenuTitleSelectImage:menu_up}, {WMZMenuTitleNormal:全部筛选,WMZMenuTitleImage:menu_dowm,WMZMenuTitleSelectImage:menu_up}, ]; }这里我们使用了下拉和上拉图标menu_dowm.png和menu_up.png来表示菜单的展开和收起状态。筛选菜单图标展示筛选菜单中使用的主要图标如下筛选图标下拉箭头上拉箭头这些图标可以根据需要进行替换以匹配你的应用风格。第四步配置菜单数据美团外卖的筛选菜单包含多种数据类型我们需要通过实现dataForRowAtDropIndexPath:方法来提供这些数据- (NSArray *)menu:(WMZDropDownMenu *)menu dataForRowAtDropIndexPath:(WMZDropIndexPath *)dropIndexPath{ if (dropIndexPath.section 0){ return [综合排序,销量优先,速度优先,评分优先, 综合排序,销量优先,速度优先,评分优先]; }else if (dropIndexPath.section 1){ if (dropIndexPath.row 0) return [全部品类,美食,甜点饮品,超市便利, 生鲜果蔬,送药上门,鲜花绿植]; if (dropIndexPath.row 1) return []; }else if (dropIndexPath.section 2){ return [30分钟内,40分钟内,50分钟内,60分钟内,30km内,40km内,50km内,60km内]; }else if (dropIndexPath.section 3){ if (dropIndexPath.row 0) return [四星以上,品牌商家]; if (dropIndexPath.row 1) return [美团专送,到店自取]; if (dropIndexPath.row 2) return [优惠商家,满减优惠,近端领券,折扣商品, 优惠商家,满减优惠,近端领券,折扣商品, 优惠商家,满减优惠,近端领券,折扣商品]; if (dropIndexPath.row 3) return [跨天预定,开发票, {WMZMenuTitleNormal:赠准时宝,image:menu_xinyong}, {WMZMenuTitleNormal:极速退款,image:menu_xinyong}]; if (dropIndexPath.row 4) return [30分钟内,40分钟内,50分钟内,60分钟内, 30km内,40km内,50km内,60km内]; } return []; }这段代码根据不同的菜单项提供了相应的筛选选项包括排序方式、品类、配送速度等。第五步自定义菜单样式为了让菜单更符合美团外卖的风格我们需要自定义一些菜单样式。例如设置不同菜单项的高度- (CGFloat)menu:(WMZDropDownMenu *)menu heightAtDropIndexPath:(WMZDropIndexPath *)dropIndexPath AtIndexPath:(NSIndexPath *)indexpath{ if (dropIndexPath.section 0 || dropIndexPath.section 1) { return 40; } return 35; }我们还可以设置菜单的展开和收起动画- (MenuShowAnimalStyle)menu:(WMZDropDownMenu *)menu showAnimalStyleForRowInSection:(NSInteger)section{ return MenuShowAnimalBottom; } - (MenuHideAnimalStyle)menu:(WMZDropDownMenu *)menu hideAnimalStyleForRowInSection:(NSInteger)section{ return MenuHideAnimalTop; }第六步处理菜单交互最后我们需要处理用户与菜单的交互。例如当用户选择某个筛选选项时我们可以通过didSelectRowAtDropIndexPath:dataIndexPath:data:方法来更新界面- (void)menu:(WMZDropDownMenu *)menu didSelectRowAtDropIndexPath:(WMZDropIndexPath *)dropIndexPath dataIndexPath:(NSIndexPath *)indexpath data:(WMZDropTree*)data{ // 处理选中事件 if (dropIndexPath.section 1) { if (dropIndexPath.row 0) { NSArray *arr self.dataDic[data.name]; if (arr.count 0) { [menu closeWith:dropIndexPath row:indexpath.row data:data]; } [menu updateData:self.dataDic[data.name] ForRowAtDropIndexPath:dropIndexPath]; } } }总结通过以上步骤我们成功实现了美团外卖风格的筛选菜单。WMZDropDownMenu提供了丰富的自定义选项使我们能够轻松创建各种风格的筛选菜单。如果你想了解更多关于WMZDropDownMenu的功能可以查看项目中的其他示例代码如WMZDropDownMenu/demo/淘宝/TaoBaoDdemo.m和WMZDropDownMenu/demo/拼多多/PinDDDemo.m等。希望本文能够帮助你快速集成和使用WMZDropDownMenu为你的应用添加专业级的筛选功能【免费下载链接】WMZDropDownMenu一个能几乎实现所有App各种类型筛选菜单的控件,可悬浮,目前已实现闲鱼/美团/Boss直聘/京东/饿了么/淘宝/拼多多/赶集网/美图外卖等等的筛选菜单,可以自由调用代理实现自己想组装的筛选功能和UI,且控件的生命周期自动管理,悬浮自动管理(A control that can implement almost all types of filtering menus of all apps)项目地址: https://gitcode.com/gh_mirrors/wm/WMZDropDownMenu创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考