[iOS 抽屉DDMenuController] 侧边弹出库 使用

高宸
2023-12-01

步骤如下:

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;
}
 类似资料: