该项目受到了在 Facebook iOS 应用中看到的侧边菜单功能启发。MFSideMenu 利用视图控制器容器,并提供了简单的 API 来实现侧边菜单功能。它支持基于故事板的应用以及传统设置。
将 MFSideMenu
文件夹添加到您的项目中。将 QuartzCore 添加到您的项目中。MFSideMenu 使用 ARC。如果您有一个不使用 ARC 的项目,只需将编译器标志 -fobjc-arc
添加到 MFSideMenu 文件中。
在您的应用程序代理中
#import "MFSideMenu.h"
MFSideMenuContainerViewController *container = [MFSideMenuContainerViewController
containerWithCenterViewController:centerViewController
leftMenuViewController:leftMenuViewController
rightMenuViewController:rightMenuViewController];
self.window.rootViewController = container;
[self.window makeKeyAndVisible];
// 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:^{}];
您可以选择在哪些区域允许进行平移手势。
// 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;
您可以将平移添加到任何视图,例如:
[panView addGestureRecognizer:[self.menuContainerViewController panGestureRecognizer]];
您可以监听菜单状态事件的变化(例如,菜单即将打开、菜单已打开等)。请参阅 MFSideMenuContainerViewController.h,了解不同类型的事件。
[[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;
// ...
}
启用此选项后,侧边菜单将与中心视图控制器一起滑动进入和退出。此效果类似于Wunderlist侧边菜单。
// enable the menu slide animation
[menuContainerViewController setMenuSlideAnimationEnabled:YES];
// control the exaggeration of the menu slide animation
[menuContainerViewController setMenuSlideAnimationFactor:3.0f];
MFSideMenu给您提供了在中心视图控制器和侧边菜单之间显示阴影的选项。
// 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];