关于 Sheeeeeeet
Sheeeeeeet 是一个 UIKit 库,可以让你创建以自定义动作表、上下文菜单、通知控制器或任何您喜欢的任何方式呈现的菜单。
结果可能会像这样,也可以完全不同
Sheeeeeeet 提供了许多项目类型(标准项目、按钮、标题、切换等)并可以扩展您自己的自定义项目类型。
关于此存储库
因为我已经个人转向 SwiftUI,所以此存储库不再处于活跃开发中。但我仍然愿意合并任何增加其价值或修复与新 iOS 版本相关问题的 PR。
安装
可以使用Swift Package Manager来安装Sheeeeeeeeet
https://github.com/danielsaidi/Sheeeeeeeeet.git
或者使用CocoaPods
pod Sheeeeeeeeet
如果你不想依赖外部库,你也可以将源代码复制到你的应用中。
支持的平台
Sheeeeeeeeet支持iOS 9及其以上版本。
入门教程
创建菜单
使用Sheeeeeeeeet,你从一个菜单开始,如下
let item1 = MenuItem(title: "Int", value: 1)
let item2 = MenuItem(title: "Car", value: Car())
let button = OkButton(title: "OK")
let items = [item1, item2, button]
let menu = Menu(title: "Select a type", items: items)
该库有许多内置的项目类型,例如按钮、选择项、链接等。完整列表可以在这里找到。
你也可以通过继承现有的任何一项来创建自己的自定义项目类型创建自己的自定义项目类型。例如,如果你构建了一个租车应用,你可以创建一个针对汽车的项目,它使用一个Car
模型。
你甚至可以通过子类化Menu
来创建自己的菜单类型。这使得创建提供特定功能、处理特定任务等的特定于应用的菜单成为可能。
以动作表形式展示菜单
您可以将菜单以自定义动作表的形式展示
let sheet = menu.toActionSheet(...) { sheet, item in ... }
sheet.present(in: vc, from: view) { sheet, item in ...
print("You selected \(item.title)")
}
更多详细信息请见此动作表指南。
将菜单添加为上下文菜单
您可以将菜单添加为iOS 13上下文菜单到任何喜欢的视图
menu.addAsContextMenu(to: view) { sheet, item in ...
print("You selected \(item.title)")
}
更多详细信息请见此上下文菜单指南。
将菜单以弹窗控制器形式展示
您可以将菜单以UIAlertController
的形式展示
let delegate = menu.presentAsAlertController(in: self, from: view) { sheet, item in ...
print("You selected \(item.title)")
}
更多详细信息请见此弹窗控制器指南。
演示应用程序
演示展示了不同的菜单和菜单项,包括子类化和外观调整。要尝试使用它,只需打开并运行Sheeeeeeeeet
项目。
支持
您可以在GitHub赞助此项目或联系以获取付费支持。
联系我
如果您有任何问题或想要以任何方式做出贡献,请随时联系
- 网站: danielsaidi.com
- Mastodon: @隐私保护邮箱
- Twitter: @danielsaidi
- E-mail: 隐私保护邮箱
许可
Sheeeeeeeeet遵从MIT许可。更多信息请查阅LICENSE文件。