DSDMenu
— Dead Simpe Dropdown Menu
Swift 编写的简单下拉菜单。
特点
- 根据所选单元格自动更新菜单按钮内容
- 使用委托或配置闭包来设置菜单
- 使用默认或自定义菜单单元格(带和不带 NIBs)
- 通过编程或使用 Interface Builder 创建菜单
要求
- iOS 9.0+
- Xcode 9.0+
- Swift 4.0+
示例
要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install
。
安装
DSDMenu 可通过 CocoaPods 获取。
CocoaPods 是 Swift 和 Objective-C Cocoa 项目的依赖管理器。您可以使用以下命令安装它
$ sudo gem install cocoapods
要集成 DSDMenu,只需将以下行添加到您的 Podfile
中
pod 'DSDMenu'
然后,运行以下命令
pod install
使用方法
初始化
-
代码初始化
使用便利初始化器
init(title: String, frame: CGRect = CGRect.zero)
-
使用界面构建器
在故事板中放置一个
UIButton
对象,并按照下面的图片更改自定义类
自定义菜单行为
DSDMenu 可以通过两种方式(互斥的)进行自定义和控制
-
使用代理(旧方式)
符合
DropDownDelegate
协议并分配代理 -
使用配置闭包(新方式)
实例化菜单对象,然后传递包含在闭包内的
DropDownMenuConfigurator
实例到configure(using: (DropDownMenuConfigurator) -> Void)
方法中menu.configure { configurator in configurator.cellClass(DropDownCell.self) .numberOfItems(10) .updateThumbnailOnSelection(true) .didSelectItem { index in print(index) } .willDisplayCell { (cell, index) in print(cell, index) } }
API参考
代理方法 | 配置方法等效 | 描述 |
---|---|---|
numberOfItems(in:) |
numberOfItems(_:) |
请求代理以获取菜单中的条目数 |
cellClass(for:) |
cellClass(_:) |
请求代理以获取菜单中使用的单元格类 |
dropDownMenu(_:didSelectItemAt:) |
didSelectItem(_:) |
告诉代理菜单中的条目被点击 |
dropDownMenu(_:willDisplay:forRowAt:) |
willDisplayCell(_:) |
告诉代理菜单中的单元格即将显示 |
updateThumbnailOnSelection(in:) |
updateThumbnailOnSelection(_:) |
请求代理是否应在选择条目时自动更新缩略图图像 |
TODO Section
- 使用闭包而不是代理进行配置
- 根据选择的单元格内容自动更新视图
- 在
updateConstraints()
中设置约束(另请参阅) - 设置Pod
- 完成README
- 当
updateThumbnailOnSelection = true
时正确处理方向变化 - 如果可能的话,使用POP而不是子类化单元格
- 允许自定义菜单的外观(阴影、颜色等)
- 单元和UI测试
- Rx扩展
贡献
贡献总是受欢迎的,只需遵循以下步骤
- 分支
- 创建您的功能分支(《git checkout -b my-new-feature》)
- 提交您的更改(《git commit -am '添加一些功能'》)
- 推送到分支(《git push origin my-new-feature》)
- 创建新的 Pull Request
这就完了!
作者
许可证
DSDMenu 在 MIT 许可证下发布。更多信息请参阅 LICENSE。