ContextMenu 0.4.0

ContextMenu 0.4.0

Ryan NystromRyan Nystrom维护。



  • Ryan Nystrom

  • 具有令人愉悦的动画和样式的上下文菜单
  • 使用您自己的 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:菜单的圆角半径
  • shadowRadiusshadowOpacity:容器阴影的外观
  • xPaddingyPaddingedgePadding:从源视图和屏幕边缘的填充
  • overlayColor:背景颜色
  • motionEffect:响应设备陀螺仪变化,类似于Springboard.app中的应用图标。

如果您还有更多自定义需求,我们将乐意接受Pull Request!

致谢