iOS之UI--使用SWRevealViewController實現側邊菜單功能詳解實例


 

使用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屬性即可:
 
 
其實這只是實現側滑菜單的很多方法中的一種,你也可以試着自己從空項目開始寫,使用自定義的動畫去實現;或者是尋找別的開源類庫去實現,比如 ENSwiftSideMenu 
 
二、純代碼結合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
 

 

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM