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

jopen 9年前發布 | 2K 次閱讀 Objective-C 大數據hadoop,公開課

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的根視圖控制器上,運行程序,就可以實現用手勢來控制抽屜的拉出和收回。



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

1.在中心視圖 控制器中添加頭文件

#import "UIViewController+MMDrawerController.h"//第三方封裝的頭文件
#import "MMDrawerBarButtonItem.h"//第三方封裝的頭文件
#import "LeftDrawerTableViewController.h"、、左視圖頭文件

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

[self setupLeftMenuButton];//在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];
}
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!