使用SWRevealViewController實現側邊菜單功能詳解
下面通過兩種方法詳解SWRevealViewController實現側邊菜單功能:
1.使用StoryBoard實現 2.純代碼實現
前言:手機屏幕始終有限,如何在有限的展示空間提供便捷的導航入口呢?Facebook的App設計了一個可以從屏幕側邊滑出的導航,這一設計模式引得各大主流 App盡相模仿。一時間,Path,Mailbox,Gmail都采用了這種設計。Github 上也有很多側欄導航的解決方案,這里我們使用John的
SWRevealViewController 類來實現,這里就通過分別詳細的通過StoryBoard和純代碼結合xib來實現。
SWRevealViewController在github下載地址: 點擊這里
|
它的工作流程:
- 用戶點擊“list”按鈕,導航向右滑出
- 用戶再次點擊“list”按鈕,導航向左收起
- 通過左右滑動也能達到同樣的效果
不管接下來用的是StoryBoard方法實現還是純代碼實現,首先都要做的一件事情就是將框架里的主要的源碼拷貝進項目中:

開始:
一、使用StoryBoard實現:
1、首先建立UI框架:

2、上面的圖的連線在這里也詳細補充一下吧:
ContentVC里用了三個UINavigationVC以及自帶的連線,當然你可以自己更換UINavigationVC的rootViewController,比如我這里就是換成了普通的ViewController,然后自己添加子控件比如UIView,最后連線連上Navigation的rootViewController連線。(這里會點StoryBoard就應該秒懂)
接下來講的連線是就是比較重要的,反正我之前沒用過的連線,也是到別的大神博客里學習來的。

剩下需要連線的是ContainerVC、MenuVC,三個UINavigationVC之間的連線,而這里他們的連線上面一個圖給出了,但是連接的模式有些細節上的不一樣,對於ContainerVC作為容器的連線,都是選擇reveal view controller set Controller :

而除了容器控制器ContainerVC之外的連線,也就是作為MenuVC的TabVC連接三個作為ContentVC的UINavigationVC,都是用reveal view controller push Controller連線:

接下來設置兩個Segue 的 identifier, 設置成“sw_front”,告訴 SWRevealViewController 這是前置控制器。
rear英文就是后背的意思,這里設置sw_rear就是告訴SWRevealViewController這是后背控制器

接下來為對應的控制器創建類,然后為對應的控制器指派類Class。
首先最重要的是要將主要的作為容器的控制器ContainerVC,將作為側滑欄的容器視圖的指派類Class設置為SWRevealViewController

然后指派的類用圖快速表示表示:

為了能夠當視圖從 ContentVC —> MenuVC ,所以需要在三個TabView的toolBar上添加需要響應的item控件,並設置圖標:

接着需要在OneVC控制器類中,結合代碼將框架和這個第一個頁面對應的控制器聯系起來

然后第二個頁面和第三個頁面也是這樣。
通過以上storyboard實現側滑菜單的運行效果:

到這里源碼百度雲下載鏈接:
http://pan.baidu.com/s/1c1coLLu 密碼: avgw
SwRevealViewController提供了很多方法來配置菜單欄的樣式。比如你想更改菜單欄的寬度,你就可以更新rearViewRevealWidth屬性即可:

二、純代碼結合xib實現:
用純代碼實現比較靈活,比如可以設置右邊的側滑菜單,StoryBoard目前我還不知道怎么連線添加右邊的側滑菜單。不過StoryBoard想實現右邊側滑在前面項目示例基礎上可以使用源代碼實現添加哦。其實本質還是接下來要講解的全純代碼實現:
在用純代碼之前,設置Main清除掉,然后願意的話刪除Main.storyboard也是可以的。

接着開始在AppDelegate中敲代碼,管理需要創建的所有的控制器


一步一步跟着我的代碼步驟很好理解的哦。

到這里我就試着運行了一下,發現只是打開了一個空白的Navigation視圖,沒有什么卵用,那是當然的拉,還沒有為各自控制器設置事件監聽或者手勢監聽,甚至界面的控件都沒添加,當然沒什么效果了。
接着就要為各自的視圖添加UI嘍,首先添加item需要的素材,素材備份百度雲下載鏈接:
http://pan.baidu.com/s/1jHh2oV8 密碼: p7me :

然后首先在FrontViewController中添加代碼:

上效果圖展示:

接着要要豐富這個框架嘍,先處理RearViewController

然后要記得為UITableView控件添加數據源和代理

然后運行一下,自己看看效果吧,這里暫時不上圖了。
然后接着為這個RearViewController的兩個cell添加向導到目標控制器
補充下圖缺少的部分代碼:
/**
輔助變量
表示是否是剛剛顯示過的控制器
*/
@property (nonatomic,assign)NSInteger isSameViewController;
然后在這里我將之前的畫板的控制器拷貝拖進來了,
然后#import “CanvasViewController.h”就直接使用了

然后現在必須要看運行效果了:

項目百度雲下載鏈接:
http://pan.baidu.com/s/1qX6Y2DY 密碼: f7i8