ExpandingMenu

by monoqlo

monoqlo / ExpandingMenu

ExpandingMenu is menu button for iOS written in Swift.

426 Stars 91 Forks Last release: about 2 years ago (0.4.0) MIT License 66 Commits 9 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

ExpandingMenu

CI Status Version License Platform

demo

ExpandingMenu is written in Swift.

Requirements

  • iOS 8.0+
  • Xcode 10.0+
  • Swift 3.x+

Installation

CocoaPods

You can install CocoaPods with the following command:

$ gem install cocoapods

To integrate ExpandingMenu into your Xcode project using CocoaPods, specify it in your

Podfile
:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target '' do pod 'ExpandingMenu', '~> 0.4' end

Then, run the following command:

$ pod install

Carthage

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate ExpandingMenu into your Xcode project using Carthage, specify it in your

Cartfile
:
github "monoqlo/ExpandingMenu" ~> 0.4

Run

carthage update
to build the framework and drag the built
ExpandingMenu.framework
into your Xcode project.

Manually

  1. Download and drop
    /ExpandingMenu
    folder in your project.
  2. Congratulations!

Usage

import ExpandingMenu

let menuButtonSize: CGSize = CGSize(width: 64.0, height: 64.0) let menuButton = ExpandingMenuButton(frame: CGRect(origin: CGPoint.zero, size: menuButtonSize), image: UIImage(named: "chooser-button-tab")!, rotatedImage: UIImage(named: "chooser-button-tab-highlighted")!) menuButton.center = CGPoint(x: self.view.bounds.width - 32.0, y: self.view.bounds.height - 72.0) view.addSubview(menuButton)

let item1 = ExpandingMenuItem(size: menuButtonSize, title: "Music", image: UIImage(named: "chooser-moment-icon-music")!, highlightedImage: UIImage(named: "chooser-moment-icon-music-highlighted")!, backgroundImage: UIImage(named: "chooser-moment-button"), backgroundHighlightedImage: UIImage(named: "chooser-moment-button-highlighted")) { () -> Void in // Do some action }

・・・

let item5 = ExpandingMenuItem(size: menuButtonSize, title: "Sleep", image: UIImage(named: "chooser-moment-icon-sleep")!, highlightedImage: UIImage(named: "chooser-moment-icon-sleep-highlighted")!, backgroundImage: UIImage(named: "chooser-moment-button"), backgroundHighlightedImage: UIImage(named: "chooser-moment-button-highlighted")) { () -> Void in // Do some action }

menuButton.addMenuItems([item1, item2, item3, item4, item5])

Customize

ExpandingMenuButton

// Bottom dim view
menuButton.bottomViewColor = UIColor.redColor()
menuButton.bottomViewAlpha = 0.2

// Whether the tapped action fires when title are tapped menuButton.titleTappedActionEnabled = false

// Menu item direction menuButton.expandingDirection = .Bottom menuButton.menuTitleDirection = .Right

// The action when the menu appears/disappears menuButton.willPresentMenuItems = { (menu) -> Void in print("MenuItems will present.") }

menuButton.didPresentMenuItems = { (menu) -> Void in print("MenuItems will present.") }

menuButton.willDismissMenuItems = { (menu) -> Void in print("MenuItems dismissed.") }

menuButton.didDismissMenuItems = { (menu) -> Void in print("MenuItems will present.") }

// Expanding Animation menuButton.expandingAnimations = [] // No animation

menuButton.expandingAnimations = CustomAnimationOptions.all.symmetricDifference(.menuButtonRotate)

// Folding Animation menuButton.foldingAnimations = .all

menuButton.foldingAnimations = [.MenuItemMoving, .MenuItemFade, .MenuButtonRotation]

ExpandingMenuItem

// Title
item.title = "text"
item.titleColor = UIColor.redColor()

// Title margin to menu item item.titleMargin = 4

Author

monoqlo, [email protected]

License

ExpandingMenu is available under the MIT license. See the LICENSE file for more info.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.