iOS Interactive Side Menu written in Swift.
It supports following customization:
- Animation duration
- Visible content width
- Content scale
- Using spring animation with params customization
- Animation options like animation curve
To install it through CocoaPods, add the following line to your Podfile:
pod 'InteractiveSideMenu'
To install it through Carthage, add the following line to your Cartfile:
github "handsomecode/InteractiveSideMenu"
You should use 3 basic ViewControllers for creating subclasses for implementing your side menu.
MenuContainerViewControlleris a host for menu and content viewsMenuViewControlleris a container for menu viewMenuItemContentControllleris a container for content that corresponds menu item
To setup your side menu you shoud do 3 things:
- Provide implementation of base
MenuViewControllerand assing it tomenuViewControllerproperty - Provide implementation of menu content and assing array of content controllers to
contentViewControllersproperty - Select initial content controller by calling
selectContentViewController(_ selectedContentVC: MenuItemContentViewController)
import InteractiveSideMenu
class HostViewController: MenuContainerViewController {
override func viewDidLoad() {
super.viewDidLoad()
menuViewController = self.storyboard!.instantiateViewController(withIdentifier: "NavigationMenu") as! MenuViewController
contentViewControllers = contentControllers()
selectContentViewController(contentViewControllers.first!)
}
private func contentControllers() -> [MenuItemContentViewController] {
var contentList = [MenuItemContentViewController]()
contentList.append(self.storyboard?.instantiateViewController(withIdentifier: "First") as! MenuItemContentViewController)
contentList.append(self.storyboard?.instantiateViewController(withIdentifier: "Second") as! MenuItemContentViewController)
return contentList
}
}To show menu you should call showMenu() method that is available in MenuItemContentViewController class.
import InteractiveSideMenu
class FirstViewController: MenuItemContentViewController {
@IBAction func didOpenMenu(_ sender: UIButton) {
showMenu()
}
}To change content view you should choose desired content controller and hide menu.
let index = 2 // second menu item
guard let menuContainerViewController = self.menuContainerViewController else { return }
let contentController = menuContainerViewController.contentViewControllers[index]
menuContainerViewController.selectContentViewController(contentController)
menuContainerViewController.hideMenu()To customize animation for menu opening or closing you should override menuTransitionOptionsBuilder() method that is available in MenuContainerViewColtroller class.
override func menuTransitionOptionsBuilder() -> TransitionOptionsBuilder? {
return TransitionOptionsBuilder() { builder in
builder.duration = 0.5
builder.contentScale = 1
}
}See Sample for more details.
- iOS 8.0+
- Xcode 8.1+
- Swift 3.0+
InteractiveSideMenu is available under the Apache License, Version 2.0. See the LICENSE file for more info.
