mfs

MFSideMenu

Facebook-like side menu for iOS

Showing:

Popularity

Downloads/wk

0

GitHub Stars

1.2K

Maintenance

Last Commit

7yrs ago

Contributors

11

Package

Dependencies

0

License

BSD

Categories

Readme

This project was inspired by the side-menu functionality seen in the Facebook iOS app. MFSideMenu utilizes view controller containment and gives you a simple API for implementing side-menu functionality. It integrates with storyboard-based apps as well as traditional setups.

 

Features

  • Universal device support (iPhone + iPad)
  • Universal orientation support (Portrait + Landscape)
  • Menus on the left and right side of the screen.
  • Storyboard support
  • View controller containment
  • Works with UINavigationController, UITabBarController, and other types of view controllers
  • Nice set of configuration options
  • Lightweight, simple and readable code.

Installation

Manually

Add the MFSideMenu folder to your project. Add QuartzCore to your project. MFSideMenu uses ARC. If you have a project that doesn't use ARC, just add the -fobjc-arc compiler flag to the MFSideMenu files.

Usage

Basic Setup

In your app delegate:

#import "MFSideMenu.h"

MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController containerWithCenterViewController:centerViewController leftMenuViewController:leftMenuViewController rightMenuViewController:rightMenuViewController]; self.window.rootViewController = container; [self.window makeKeyAndVisible];

Opening & Closing Menus

// toggle the left side menu [self.menuContainerViewController toggleLeftSideMenuCompletion:^{}]; // toggle the right side menu [self.menuContainerViewController toggleRightSideMenuCompletion:^{}]; // close the side menu [self.menuContainerViewController setMenuState:MFSideMenuStateClosed completion:^{}]; // open the left side menu [self.menuContainerViewController setMenuState:MFSideMenuStateLeftMenuOpen completion:^{}]; // open the right side menu [self.menuContainerViewController setMenuState:MFSideMenuStateRightMenuOpen completion:^{}];

Pan Modes

You can specify which areas you want to allow pan gestures on:

// enable panning on the center view controllers & the side menus (this is the default behavior): menuContainerViewController.panMode = MFSideMenuPanModeCenterViewController | MFSideMenuPanModeSideMenu;

// disable panning on the side menus, only allow panning on the center view controller: menuContainerViewController.panMode = MFSideMenuPanModeCenterViewController;

// disable all panning menuContainerViewController.panMode = MFSideMenuPanModeNone;

Panning Custom Views

You can add panning to any view like so:

[panView addGestureRecognizer:[self.menuContainerViewController panGestureRecognizer]];

Listening for Menu Events

You can listen for menu state event changes (i.e. menu will open, menu did open, etc.). See MFSideMenuContainerViewController.h for the different types of events.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(menuStateEventOccurred:) name:MFSideMenuStateNotificationEvent object:nil];

  • (void)menuStateEventOccurred:(NSNotification )notification { MFSideMenuStateEvent event = [[[notification userInfo] objectForKey:@"eventType"] intValue]; MFSideMenuContainerViewController containerViewController = notification.object; // ... }

With this option enabled, the side menus will slide in & out with the center view controller. This effect is similar to the Wunderlist side menu.

// enable the menu slide animation [menuContainerViewController setMenuSlideAnimationEnabled:YES];

// control the exaggeration of the menu slide animation [menuContainerViewController setMenuSlideAnimationFactor:3.0f];

Shadow

MFSideMenu gives you the option to show a shadow between the center view controller & the side menus.

// enable/disable the shadow [menuContainerViewController.shadow setEnabled:YES];

// set the radius of the shadow [menuContainerViewController.shadow setRadius:10.0f];

// set the color of the shadow [menuContainerViewController.shadow setColor:[UIColor blackColor]];

// set the opacity of the shadow [menuContainerViewController.shadow setOpacity:0.75f];

Contact

@mike_frederick

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100