步骤如下:
1.必须先定义左侧栏,右侧栏的内容,分别为LeftViewController,RightViewController.
2.在AppDelegate中添加方法:
ViewController *viewController = [[ViewController alloc]init];
UINavigationController *nav = [[UINavigationControlleralloc]initWithRootViewController:viewController];
DDMenuController *menuController = [[DDMenuControlleralloc]initWithRootViewController:nav];
[menuController setEnableGesture:NO];
self.window.rootViewController = menuController;
self.window.backgroundColor = [UIColor whiteColor];
LeftViewController *leftController = [[LeftViewController alloc]init];
menuController.leftViewController = leftController;
RightViewController *rightController = [[RightViewController alloc]init];
menuController.rightViewController = rightController;
[self.window makeKeyAndVisible];
这样可以左滑到左侧栏,然后点击屏幕返回;右滑到右侧栏,点击屏幕返回了。
3.如果要实现按钮滑动到左侧栏,添加如下方法:
- (void)showLeft:(UIButton *)sender
{
DDMenuController ddmenu = (DDMenuController )((AppDelegate *)[[UIApplication sharedApplication]delegate].window.rootViewController);
[ddmenu showLeftController:YES];
}
4.如果要实现3个页面自由滑动请自定义。
我觉得DDMenuController还有以下不好用的地方:
1.当滑动到左侧栏后就不能再滑动回到主页面了,只能点击右侧屏幕返回,用户体验稍差;
2.没有实现有远近视角的半翻页效果(看起来侧边栏侧对着用户一样),效果不够出彩;
如果你是UI大牛或小牛的话,还是建议自己定义效果吧;也可能是我对这个类的研究不够深入,欢迎指正。
目前我使用的是同事写的一个好用的类,可能会在以后的博客中给出。
以上内容为转载
因为DDMenuController是继承自UINavigationController
所以,使用了DDMenu之后, 我自己原本的naigationController 就失效了 变成了DDMenuController的样式
_window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
SYViewController *v = [[SYViewController alloc] init];
// MainNavigationController *nva = [[MainNavigationController alloc] initWithRootViewController:v];
// _window.rootViewController = nva;
// [_window makeKeyWindow];
DDMenuController *viewControllerRoot = [[DDMenuController alloc] initWithRootViewController:v];
NFCViewController *nfc = [[NFCViewController alloc] initWithNibName:@"NFCViewController" bundle:nil];
viewControllerRoot.rightController = nfc;
_window.rootViewController = viewControllerRoot;
[_window makeKeyWindow];
所以,你可以在DDMenuController里面的init方法里, 粘贴你的navigation设置代码即可
- (id)initWithRootViewController:(UIViewController*)controller {
if ((self = [super initWithRootViewController:controller])) {
self.navigationBar.titleTextAttributes=@{NSForegroundColorAttributeName:[UIColor blackColor],NSFontAttributeName : [UIFont systemFontOfSize:17]};
self.navigationBar.tintColor = [Common hexStringToColor:@"589e3e"];
}
return self;
}