- 具有令人愉悦的动画和样式的上下文菜单
- 使用您自己的
UIViewController
实现对菜单内容的完全控制 - 大量可用功能和交互式自定义
安装
只需将 ContextMenu
添加到您的 Podfile 中,然后运行pod install
。完成!
pod 'ContextMenu'
对于 Carthage,只需将 GitHawkApp/ContextMenu
添加到您的 Cartfile 中,然后运行carthage bootstrap
。
github "GitHawkApp/ContextMenu"
使用
从您的 UIViewController
中显示菜单
ContextMenu.shared.show(
sourceViewController: self,
viewController: MyContentViewController()
)
您必须提供一个自定义的 UIViewController
来显示在菜单中。唯一的要求是您必须设置 preferredContentSize
来调整内容大小。
class MyContentViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
title = "Demo"
preferredContentSize = CGSize(width: 200, height: 200)
}
}
自定义
从源视图显示
从按钮或视图动画展开菜单。`ContextMenu` 会处理布局,确保您的菜单不会裁剪屏幕。
@IBAction func onButton(_ sender: UIButton) {
ContextMenu.shared.show(
sourceViewController: self,
viewController: MyContentViewController(),
sourceView: sender
)
}
容器样式与显示
使用ContextMenu.Options
更改包含视图的外观。
ContextMenu.shared.show(
sourceViewController: self,
viewController: MenuViewController(),
options: ContextMenu.Options(containerStyle: ContextMenu.ContainerStyle(backgroundColor: .blue)),
sourceView: button
)
您还可以使用ContextMenu.ContainerStyle
进行更多自定义。
cornerRadius
:菜单的圆角半径shadowRadius
和shadowOpacity
:容器阴影的外观xPadding
、yPadding
、edgePadding
:从源视图和屏幕边缘的填充overlayColor
:背景颜色motionEffect
:响应设备陀螺仪变化,类似于Springboard.app中的应用图标。
如果您还有更多自定义需求,我们将乐意接受Pull Request!
致谢
- 灵感来源于Things 3
- 由以下作者创造
❤️ Ryan Nystrom