天天看點

iOS中 超簡單抽屜效果(MMDrawerController)的實作

ios開發中,展示類應用通常要用到抽屜效果,由于項目需要,本人找到一個demo,縮減掉一些不常用的功能,整理出一個較短的執行個體。

首先需要給工程添加第三方類庫 

MMDrawerController:

這裡講的執行個體隻加入了左滑抽屜。右滑和左滑隻是初始化時多添加一個右視圖控制器,其他方法基本相同。

下面是用手勢實作抽屜的拉出和收回

1.初始化跟視圖控制器時,在AppDelegate中導入頭檔案

#import "MMDrawerController.h"

2.初始化方法先初始化左視圖和中心視圖,也就是圖中的

BoutiqueCollectionViewController

LeftDrawerTableViewController

3.初始化完兩個子視圖控制器後,初始化抽屜根視圖控制器MMDrawerController,初始化抽屜控制器時需要将左視圖控制器和中心視圖控制器添加到抽屜視圖控制器上。

    //CollectionView的樣式

    UICollectionViewFlowLayout * flowLayout = [[UICollectionViewFlowLayout alloc] init];

    //初始化中心視圖

    BoutiqueCollectionViewController * boutiqueCVC = [[BoutiqueCollectionViewController alloc] initWithCollectionViewLayout:flowLayout];

    boutiqueCVC.collectionView.backgroundColor = [UIColor whiteColor];

    UINavigationController * boutiqueNC = [[UINavigationController alloc] initWithRootViewController:boutiqueCVC];

    //初始化左視圖

    LeftDrawerTableViewController * leftTVC = [[LeftDrawerTableViewController alloc] init];

    UINavigationController * leftNC = [[UINavigationController alloc] initWithRootViewController:leftTVC];

    MMDrawerController * drawerController = [[MMDrawerController alloc] initWithCenterViewController:boutiqueNC leftDrawerViewController:leftNC];

    drawerController.maximumLeftDrawerWidth = 200;

4.初始化完成之後添加滑動手勢,通過滑動手勢拉出和收回抽屜。手勢封裝在第三方類庫中,程式如下。

    //滑動手勢快關抽屜

    [drawerController setOpenDrawerGestureModeMask:MMOpenDrawerGestureModeAll];

    [drawerController setCloseDrawerGestureModeMask:MMCloseDrawerGestureModeAll];

    self.window.rootViewController = drawerController;

到此,将抽屜根視圖控制器添加到window的根視圖控制器上,運作程式,就可以實作用手勢來控制抽屜的拉出和收回。

如果需要用按鈕控制拉出和收回抽屜,需要加上下面的部分。

#import "UIViewController+MMDrawerController.h"//第三方封裝的頭檔案

#import "MMDrawerBarButtonItem.h"//第三方封裝的頭檔案

#import "LeftDrawerTableViewController.h"、、左視圖頭檔案

2.在viewDidLoad中實作添加左抽屜控制按鈕的方法

3.在下面實作添加按鈕的方法

-(void)setupLeftMenuButton

{

    //建立按鈕

    MMDrawerBarButtonItem * leftDrawerButton = [[MMDrawerBarButtonItem alloc] initWithTarget:self action:@selector(leftDrawerButtonPress:)];

     //為navigationItem添加LeftBarButtonItem

    [self.navigationItem setLeftBarButtonItem:leftDrawerButton animated:YES];

}

4.在下面實作抽屜按鈕的動作方法。

//抽屜按鈕動作

-(void)leftDrawerButtonPress:(id)sender

    //開關左抽屜

    [self.mm_drawerController toggleDrawerSide:MMDrawerSideLeft animated:YES completion:nil];

效果展示:

iOS中 超簡單抽屜效果(MMDrawerController)的實作
iOS中 超簡單抽屜效果(MMDrawerController)的實作

iOS開發者交流QQ群: 446310206

繼續閱讀