iOS 筛选菜单(下拉、侧滑、标签等)。拖文件夹进工程就能用,演示工程在仓库里可直接运行。
| 名字 | 是什么 |
|---|---|
GHDropMenu/ |
组件本体:菜单控件、Cell、模型等。你要集成的是这个文件夹。 |
GHDropMenuDemo/ |
演示 App:能跑起来的示例工程(含 Swift 示例)。 |
GHDropMenuDemo/Example/ |
演示里按场景分的示例页面代码,对照下面表格找文件。 |
- 用 Xcode 打开
GHDropMenuDemo.xcodeproj。 - 选中 Target GHDropMenuDemo,选一台模拟器,点 Run。
- 顶部 Scheme(可选):
- GHDropMenuDemo:双 Tab(OC 列表 + Swift 列表)。
- GHDropMenuDemo-ObjC / GHDropMenuDemo-Swift:只进对应语言列表。
(通过环境变量GH_ROOT_DEMO切换,详见 Scheme → Run → Environment Variables。)
首页每一行都有副标题,说明这个示例是干什么的、该抄哪个文件。
| 你在列表里点的 | 主要参考代码 |
|---|---|
| 复杂筛选菜单 | Example/复杂筛选菜单/GHComplexMenuViewController · Swift:Swift/SwiftComplexMenuViewController.swift |
| 侧滑筛选菜单 | Example/侧滑筛选菜单/GHSlipMenuViewController · Swift:Swift/SwiftSlipMenuViewController.swift |
| 普通筛选菜单 | Example/普通筛选菜单/GHNormalMenuViewController · Swift:Swift/SwiftNormalMenuViewController.swift |
| 悬浮筛选(TableView) | Example/吸附筛选菜单/GHSuspendViewController |
| 瀑布流 / 美团样式 | Example/美团外卖筛选菜单/Controller/GHMeituanFoodViewController |
- 把整个
GHDropMenu文件夹拖进你的 Xcode 工程,勾选 Copy items、勾上你的 Target。 - 在要用菜单的页面
#import "GHDropMenu.h"(Swift 用 Bridging Header 导入该头文件)。 - 照着上表里某一个示例
.m/.swift抄:创建GHDropMenu或GHDropMenuModel,addSubview,需要时调用show。
不需要改你原来的架构;菜单就是一个 UIView。
GHDropMenu *menu = [GHDropMenu creatDropMenuWithConfiguration:model
frame:CGRectMake(0, y, width, 44)
dropMenuTitleBlock:^(GHDropMenuModel *m) { /* 选标题 */ }
dropMenuTagArrayBlock:^(NSArray *tags) { /* 侧栏筛选结果 */ }];
[self.view addSubview:menu];弹层会自动挂在当前 window 的容器上,一般不用你管。
GHDropMenu *menu = [GHDropMenu creatDropFilterMenuWidthConfiguration:model
dropMenuTagArrayBlock:^(NSArray *tags) { /* ... */ }];
menu.frame = self.view.bounds;
menu.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.view addSubview:menu];
[menu show];必须:先设好 frame、addSubview,再 show。不会自动贴到 window。
把菜单关掉,避免遮罩留在 window 上:
- Objective-C:
[menu closeMenu];(在viewWillDisappear或自定义返回里调一次即可)。 - Swift:菜单上对应为
close()(Swift 对closeMenu的改名)。
- 最低系统:iOS 13.0。
- 价格校验等提示已用
UIAlertController。 - 悬浮列表里 TableView 的 section 头推荐用可复用的
GHSuspendMenuHeaderView(见吸附示例)。
更细的实现说明(如 ghPopupHostView)见上文「普通顶部筛选」与侧滑示例源码注释。
如有问题欢迎提 Issue;有帮助可以点个 Star。
