HMMenuViewController
is a fun, interactive, easy-to-use, customizable slide menu. As easy as instantiate, set images and titles, set delegate, call show method and ENJOY!!!
- Partial or full screen menu
- Translucent (blur effect) background
- Enable/disable scale background effect
- Enable/disable slide animation
- Enable/disable cell animation
- Enable/disable tap animation
- Enable/disable closing menu after rotating device
- Hiding close button when scrolling tableview up
In this case HMMenuViewController
will handle the subview frames inside the viewcontroller. Subview frames will be updated when rotating device. Just instantiate using custom initializer:
let menuViewController = HMMenuViewController(images:manager.images!, titles:manager.titles!, closeImageButton:manager.closeMenuButtonImage!)
In this case just make sure to connect @IBOutlet
before instantiating, and use AutoLayout:
@IBOutlet var tableView: UITableView!
@IBOutlet var closeButton: UIButton!
@IBOutlet var containerView: UIView! // contains tableView and closeButton, added as a subView of self.view
@IBOutlet var blurEffectView: UIVisualEffectView! //used to add background blur effect
@IBOutlet var containerViewWidthConstraint: NSLayoutConstraint! // used to animate containerView sliding
@IBOutlet var closeButtonTopSpaceConstraint: NSLayoutConstraint! // used to animate hiding closeButton when scrolling tableView up
Instantiate HMMenuViewController
as follow:
let menuViewController = UIStoryboard(name:"Main", bundle: nil).instantiateViewControllerWithIdentifier("MenuController") as! HMMenuViewController
menuViewController.images = manager.images
menuViewController.titles = manager.titles
menuViewController.closeImageButton = manager.closeMenuButtonImage
The UIViewController
showing HMMenuViewController
instance MUST conform to protocol HMMenuViewControllerDelegate
and implement required method:
// required protocol method
// This method will tell the delegate when an item from the menu is selected.
func menuViewController (menuViewController:HMMenuViewController, didSelectItemAtIndexPath indexPath:NSIndexPath) {
if indexPath.row < HMViewControllerManager.sharedInstance.viewControllers?.count {
if let viewController = HMViewControllerManager.sharedInstance.viewControllers?.objectAtIndex(indexPath.row) as? UIViewController {
navigationController?.viewControllers = [viewController]
}
}
}
The UIViewController
showing HMMenuViewController
instance MUST be embedded in a UINavigationController
navigationItem.leftBarButtonItem = UIBarButtonItem(image:hamburgerMenuButtonImage, style:.Plain, target:self, action:"showMenuViewController")
To show HMMenuViewController
instance set delegate and call showMenuFromController(:)
method
func showMenuViewController () {
menuController.delegate = self
menuController.showMenuFromController(self)
}
1.0.0
HamburgerMenu
is released under the MIT license.
Francisco Bernal Yescas (@fbernaly)