Sheeeeeeeeet Logo

Version Swift 5.6 Swift UI MIT License Twitter: @danielsaidi Mastodon: @danielsaidi@mastodon.social

关于 Sheeeeeeeeet

Sheeeeeeeeet 是一个 UIKit 库,可让你创建可以作为自定义操作表、上下文菜单、警报控制器或以任何你喜欢的方式呈现的菜单。

结果可以看起来像这样,或者完全不同

Sheeeeeeeeet 提供了多种项目类型(标准项目、按钮、标题、切换等),并且可以使用你自己的自定义项目类型进行扩展。

关于此仓库

由于我已经亲自迁移到 SwiftUI,因此该仓库不再处于积极开发中。 但是,我很乐意合并任何能增加价值或修复新 iOS 版本问题的 PR。

安装

Sheeeeeeeeet 可以使用 Swift Package Manager 进行安装

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 Sponsors 上赞助该项目,或联系我们以获得付费支持。

联系我

如果你有任何问题或想以任何方式做出贡献,请随时与我联系

许可

Sheeeeeeeeet 在 MIT 许可下可用。 有关更多信息,请参阅 LICENSE 文件。