MMDrawerController 抽屜,超詳細(xì)~

抽屜效果呢,有個(gè)主界面,還有個(gè)抽屜界面。(好像廢話(⊙o⊙)…)

1.創(chuàng)建這兩個(gè)界面,把兩個(gè)界面聯(lián)立起來(lái)

我的思路呢。。。

1.創(chuàng)建一個(gè)自定義tabBar的封裝類,如果不用,直接寫的也沒(méi)關(guān)系

2.把兩個(gè)界面創(chuàng)建出來(lái),用一句代碼把這倆合并起來(lái),變成一個(gè)_drawerController,

3.正常不應(yīng)該把主界面 塞進(jìn)tabBar里面么,不塞它了,塞這個(gè)_drawerController。。。

4.不說(shuō)了,ctrl+C。。。

#import"MMDrawerController.h"

@property(strong,nonatomic)MMDrawerController* drawerController;

創(chuàng)建這倆界面,主界面套個(gè)導(dǎo)航控制器,我們得到 navi1 和 mineLeft

//首先是主界面:HLLONeViewController

HLLOneViewController * one = [[HLLOneViewController alloc]init];

HLLNavigationViewController* navi1 = [[HLLNavigationViewController alloc] initWithRootViewController:one];//給界面 套上個(gè)導(dǎo)航,HLLNavigationViewController替換成你自己的導(dǎo)航控制器

[navi1 setRestorationIdentifier:@"RightNavigationControllerRestorationKey"];

//抽屜界面 HLLMineViewController

HLLMineViewController * mineLeft = [[HLLMineViewController alloc]init];

現(xiàn)在把他們完美結(jié)合,永相隨!

_drawerController = [[MMDrawerController alloc]initWithCenterViewController:navi1 leftDrawerViewController:mineLeft? rightDrawerViewController:nil];

配置抽屜效果,這幾個(gè)效果應(yīng)該夠用了。。。

[self.drawerController setShowsShadow:YES];

[self.drawerController setRestorationIdentifier:@"MMDrawer"];

// 設(shè)置抽屜界面的寬度

[self.drawerController setMaximumLeftDrawerWidth:SCREEN_W*0.75];

// 左右滑動(dòng),實(shí)現(xiàn)開(kāi)關(guān)

[self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];

[self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];

塞進(jìn)tabBar里面,我這個(gè)是tabBar類,直接寫的把self替換成你的tabBar名字就行

[self addChildViewController:self.drawerController];



2.首先在主界面中,大概介個(gè)樣子,實(shí)現(xiàn)導(dǎo)航欄左btn

#import"MMDrawerBarButtonItem.h"http://第三方封裝的頭文件

MMDrawerBarButtonItem* leftDrawerButton = [[MMDrawerBarButtonItem alloc]initWithTarget:self action:@selector(mineClick)]; //建個(gè)btn,給個(gè)點(diǎn)擊事件

[self.navigationItem setLeftBarButtonItem:leftDrawerButtonanimated:YES]; //把它設(shè)置為導(dǎo)航欄左btn

//給btn個(gè)圖片

UIImage* leftImage = [[UIImage imageNamed:@"yonghu"]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

self.navigationItem.leftBarButtonItem.image= leftImage;

ok,接下來(lái)實(shí)現(xiàn)點(diǎn)擊事件的方法,用于 點(diǎn)擊后顯示抽屜效果

- (void)mineClick{

if([selfisKindOfClass:[HLLOneViewController class]]) {//判斷下是否當(dāng)前界面,不用的話直接寫就行

[self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YEScompletion:nil];

}

}

恩,不錯(cuò)呢,現(xiàn)在你嘗試點(diǎn)擊,或者右滑,界面就會(huì)變成介個(gè)樣紙 ↓




3.實(shí)現(xiàn)抽屜界面,和跳轉(zhuǎn)效果

*建議寫這個(gè)界面的時(shí)候呢,因?yàn)檫@個(gè)界面只顯示75%,所以建議畫UI的時(shí)候用這個(gè)寬度寫

//屏幕 寬,此界面用這個(gè)

#define width_mine [UIScreen mainScreen].bounds.size.width*0.75

比較煩人的就是這個(gè)跳轉(zhuǎn)問(wèn)題,一般軟件的效果,就是點(diǎn)擊一個(gè)小東西,然后這個(gè)抽屜就關(guān)閉了,然后在你的主界面切換回來(lái),在主界面跳轉(zhuǎn),當(dāng)你返回的時(shí)候,也是返回主界面,抽屜是關(guān)著的。

弄的不好呢,上面那個(gè)圖,2不動(dòng),1跳了個(gè)界面?;蛘咛鋈?,返回的時(shí)候是上面那個(gè)圖

不說(shuō)了,ctrl+C。。

首先,寫這樣一個(gè)方法,用于關(guān)閉抽屜。

#import"UIViewController+MMDrawerController.h"http://第三方封裝的頭文件

- (void)closeDrawer{

[self.mm_drawerController closeDrawerAnimated:YES completion:^(BOOL finished) {

// 設(shè)置打開(kāi)抽屜模式為MMOpenDrawerGestureModeNone,也就是沒(méi)有任何效果。

[self.mm_drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeNone];

}];

// 當(dāng)我們的 抽屜界面 退出后,我們要把打開(kāi)抽屜模式再切換過(guò)來(lái),當(dāng)然這個(gè)是在中間控制器里面去寫,因?yàn)?抽屜界面 退出后會(huì)呈現(xiàn)中間控制器

}

這個(gè)方法啥時(shí)候用呢,如果你的btn,點(diǎn)擊事件是跳界面,就加上這句,或者有table,cell點(diǎn)擊事件里也加上這句[self closeDrawer];

還有跳轉(zhuǎn)的那句代碼,不一樣。寫個(gè)點(diǎn)擊事件的例子:

- (void)goToHaHa:(UIButton*)sender{

[self closeDrawer];

[(UINavigationController *)self.mm_drawerController.centerViewController pushViewController:[HaHaViewController new]? animated:YES];

}

完美跳轉(zhuǎn)~

大概就介個(gè)樣子了

希望有大神多加提點(diǎn)!小白不勝感激~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容