鹵煮一時心血來潮想實現(xiàn)個類似QQ那種側(cè)邊欄的效果基于鹵煮一向懶惰的天性想急于實現(xiàn)效果又不想動腦筋使用系統(tǒng)的框架去實現(xiàn)于是開始各種百度結(jié)果卻大失所望不得已鹵煮開始去找優(yōu)秀的demo來研究了這里鹵煮推薦一下MMDrawerController這個框架鹵煮有時間會去研究一下框架但是現(xiàn)在我們來切入正題簡易速成的實現(xiàn)我們想要的效果
創(chuàng)新互聯(lián)服務(wù)項目包括岳西網(wǎng)站建設(shè)、岳西網(wǎng)站制作、岳西網(wǎng)頁制作以及岳西網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,岳西網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到岳西省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!1.首先我們先導(dǎo)入下系統(tǒng)的框架
2.第二步再導(dǎo)入一下MMDrawerController這個框架可以去github搜索搜索不到的可以聯(lián)系鹵煮發(fā)給你
3.第三步咋們來到AppDelegate.m文件中 #import這幾個類
#import "RootTabbarController.h" #import "MMDrawerController.h" #import "MMDrawerVisualState.h" #import#import "LeftSettingVC.h" //左側(cè)彈出的控制器
接著便來實現(xiàn)根視圖的切換由于此框架已經(jīng)幫我們實現(xiàn)了根試圖的設(shè)置所以我們只需要簡單地寫下如下幾行代碼便可
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { LeftSettingVC *leftSideVC = [[LeftSettingVC alloc] init]; UINavigationController *leftNav = [[UINavigationController alloc] initWithRootViewController:leftSideVC]; self.drawerController = [[MMDrawerController alloc] initWithCenterViewController:[RootTabbarController new] leftDrawerViewController:leftNav]; [self.drawerController setShowsShadow:NO]; [self.drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll]; [self.drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll]; self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; self.window.backgroundColor = [UIColor whiteColor]; self.window.rootViewController = self.drawerController; [self.window makeKeyAndVisible]; return YES; }
4.根試圖的切換碼好了你會發(fā)現(xiàn)當(dāng)你左滑時已經(jīng)可以實現(xiàn)側(cè)邊欄的效果了然后我們想要的效果還是沒有實現(xiàn)當(dāng)點擊RootTabbarController的子視圖控制器的barItem時實現(xiàn)側(cè)邊欄的切換效果好我們來到RootTabbarController的子視圖控制器中導(dǎo)入如下幾個類
#import "LeftSettingVC.h" #import "MMDrawerBarButtonItem.h" #import "UIViewController+MMDrawerController.h"
接著在navigationBarItem的點擊事件中只需要寫下如下一行代碼
[self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];
此時哦湊你會發(fā)現(xiàn)你想要的效果已經(jīng)實現(xiàn)一大半了可以點擊彈出側(cè)邊欄了也可以滑動出現(xiàn)側(cè)邊欄了但是還沒完還有一步。
5.你可以看看QQ的實現(xiàn)效果但你點擊左側(cè)邊欄中得cell時它會跳到一個新的視圖控制器而這個控制器也是可以滑動返回點擊返回的而且在返回的瞬間你會發(fā)現(xiàn)側(cè)邊欄效果的中間的根視圖瞬間被切換了那這個我們要怎么實現(xiàn)呢其實很簡單我們來到LeftSettingVC中導(dǎo)入如下的類
#import "RightVC.h"http://點擊cell時出現(xiàn)的其他頁面可以任由我們自定義的 #import "UIViewController+MMDrawerController.h"
然后在tableView的didSelectRow方法中寫下如下的代碼
RightVC *right = [[RightVC alloc] init]; UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:right]; [self.mm_drawerController setCenterViewController:nav withCloseAnimation:YES completion:nil];
這時候點擊左側(cè)邊欄的cell所出現(xiàn)的頁面已經(jīng)可以出現(xiàn)了然而咋們的RightVC的返回還沒有寫好繼續(xù)碼
來到RightVC中導(dǎo)入如下幾個類
#import "MMDrawerBarButtonItem.h" #import "RootTabbarController.h" #import "UIViewController+MMDrawerController.h"
在這里我要插一句這個框架呢是有一個已經(jīng)設(shè)置好的icon圖標的也就是Navigation的BarItem但我們最好還是使用自定義的因為我發(fā)現(xiàn)它的icon并不能完全適配我們自己的項目這里我就將代碼一塊兒碼下
- (void)setUpNavigation{ MMDrawerBarButtonItem *leftBarItem = [[MMDrawerBarButtonItem alloc] initWithTarget:self action:@selector(back)]; //也就是這句如果是我的話 我會使用自定義的UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithImage:[UIImage p_w_picpathNamed:@"399-list1"] style:UIBarButtonItemStyleDone target:self action:@selector(back)]; leftBarItem.tintColor = [UIColor whiteColor]; [self addNavigationWithTitle:@"設(shè)置" leftItem:leftBarItem rightItem:nil titleView:nil]; //這是我自定義的方法層煮們按自己的方法設(shè)置navigation即可} //主要就是這個點擊事件中的視圖的切換 - (void)back{ RootTabbarController *rootTab = [RootTabbarController new];//記住以下兩段代碼的順序不能顛倒否則將會瞬間切換視圖無法回彈到左側(cè)邊欄的控制器 [self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil]; [self.mm_drawerController setCenterViewController:rootTab withCloseAnimation:YES completion:nil]; }
其實借助三方框架實現(xiàn)側(cè)邊欄就是這么簡單主要是網(wǎng)上逛了一圈都是一樣的沒有實質(zhì)性的解決問題的都是轉(zhuǎn)來轉(zhuǎn)去難懂甚至敷衍的辦法譬如鹵煮看到的某一篇個人工具類放進去說是要導(dǎo)入的三方框架氣的鹵煮差點沒砸電腦。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。