Skip to content

umerjabbar/ContextMenuSwift

Repository files navigation

ContextMenuSwift

Linkedin: umerjabbar Twitter: @Umer_Jabbar License Xcode 10.0+ iOS 10.0+ Swift 4.0+ Cocoapods

Installation 📱

Just add ContextMenuSwift to your Podfile and pod install. Done!

pod 'ContextMenuSwift'

Usage ✨

Example 1

Show the menu of string values on your view

CM.items = ["Item 1", "Item 2", "Item 3"] CM.showMenu(viewTargeted: YourView, delegate: self, animated: true)

Example 2

Update menu items async

CM.items = ["Item 1", "Item 2", "Item 3"] CM.showMenu(viewTargeted: YourView, delegate: self, animated: true) DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { CM.items = ["Item 1"] CM.updateView(animated: true) }

Example 3

Update targeted view async

CM.items = ["Item 1", "Item 2", "Item 3"] CM.showMenu(viewTargeted: YourView, delegate: self, animated: true) DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { CM.changeViewTargeted(newView: YourView) CM.updateView(animated: true) }

Example 4

Change the horizontal direction of menu

CM.MenuConstants.horizontalDirection = .right CM.items = ["Item 1", "Item 2", "Item 3"] CM.showMenu(viewTargeted: YourView, delegate: self, animated: true)

Example 5

Show menu with icons

let share = ContextMenuItemWithImage(title: "Share", image: #imageLiteral(resourceName: "icons8-upload")) let edit = "Edit" let delete = ContextMenuItemWithImage(title: "Delete", image: #imageLiteral(resourceName: "icons8-trash")) CM.items = [share, edit, delete] CM.showMenu(viewTargeted: YourView, delegate: self, animated: true)

Delegate

You can check events by implement ContextMenuDelegate

extension ViewController : ContextMenuDelegate { func contextMenu(_ contextMenu: ContextMenu, targetedView: UIView, didSelect item: ContextMenuItem, forRowAt index: Int) -> Bool { print(item.title) return true //should dismiss on tap } func contextMenuDidAppear(_ contextMenu: ContextMenu) { print("contextMenuDidAppear") } func contextMenuDidDisappear(_ contextMenu: ContextMenu) { print("contextMenuDidDisappear") } }

Requirements

  • Xcode 9+
  • Swift 4.0
  • iOS 10+

License

This project is under MIT license. For more information, see LICENSE file.

Credits

ContextMenuSwift was developed while trying to implement iOS 13 context menu with a tap gesture.

It will be updated when necessary and fixes will be done as soon as discovered to keep it up to date.

You can find me on Twitter @Umer_Jabbar and Linkedin umerjabbar.

Enjoy! 🤓