欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Swift項(xiàng)目中利用SWRevealViewController實(shí)現(xiàn)側(cè)滑菜單

 更新時(shí)間:2015年12月28日 14:34:34   作者:王哼哼  
這篇文章主要介紹了Swift項(xiàng)目中利用SWRevealViewController實(shí)現(xiàn)側(cè)滑菜單,需要的朋友可以參考下

像往常一樣,我們還是創(chuàng)建一個(gè)Demo App 來(lái)展示一下具體如何使用SWRevealViewController。這個(gè)Demo 很簡(jiǎn)單,功能上也不完善,主要的目的只是引導(dǎo)你去了解如何實(shí)現(xiàn)側(cè)滑菜單。

我們將要實(shí)現(xiàn)的側(cè)滑菜單大概是這個(gè)樣子的:

  • 用戶可以單擊左上角的列表按鈕來(lái)顯示側(cè)滑菜單
  • 用戶也可以右滑內(nèi)容視圖來(lái)顯示側(cè)滑菜單
  • 側(cè)滑菜單顯示的時(shí)候,用戶可以再次單擊列表按鈕來(lái)關(guān)閉它
  • 用戶也可以左滑內(nèi)容區(qū)域來(lái)關(guān)閉它

新建一個(gè) Xcode 項(xiàng)目
這篇文章的主要目的是講解側(cè)滑菜單的實(shí)現(xiàn),所以為了節(jié)省你的時(shí)間,你可以直接下載這個(gè)Xcode模板來(lái)開始學(xué)習(xí)。

這個(gè)工程里面已經(jīng)創(chuàng)建好了一個(gè) Storyboard,它包含了所有我們需要的視圖控制器。如果你已經(jīng)下載好了模板,那么先打開 Storyboard 來(lái)看一下。


想要使用 SWRevealViewController 來(lái)實(shí)現(xiàn)側(cè)滑菜單,你需要有一個(gè)控制器做容器,用它來(lái)存放菜單控制器和一組內(nèi)容控制器。我已經(jīng)為你創(chuàng)建好了菜單控制器,它是一個(gè)靜態(tài)的列表視圖,有三行內(nèi)容。對(duì)應(yīng)的有三個(gè)內(nèi)容控制器來(lái)分別展示新聞、地圖和照片。鑒于這個(gè) Demo 只是演示的目的,內(nèi)容控制器里放置的都是靜態(tài)內(nèi)容。所有用到的圖標(biāo)和圖片資源都已經(jīng)包含在了工程里面(注:在這里需要感謝Pixeden網(wǎng)站提供的免費(fèi)圖標(biāo))。

接下來(lái)開始使用 SWRevealViewController
依照上文說(shuō)的,我們要用 SWRevealViewController 來(lái)實(shí)現(xiàn)側(cè)滑菜單。首先從GitHub上把這個(gè)類庫(kù)下載下來(lái)并解壓zip文件。解壓之后你能找到 SWRevealViewController 文件夾,這個(gè)文件夾里面有兩個(gè)文件。在工程目錄下選中 SidebarMenu,單擊鼠標(biāo)右鍵,選擇“New Group”,命名為“SWRevealViewController”,將上面提到的兩個(gè)文件拖拽到 SWRevealViewController 這里。在你剛添加完這兩個(gè)文件之后,Xcode 會(huì)及時(shí)的彈出一個(gè)提示,是否要配置一個(gè)連接 Objective-C 代碼的頭文件;有了這個(gè)頭文件,你就可以將 Objective-C 代碼轉(zhuǎn)做 Swift 代碼來(lái)使用了。所以,點(diǎn)擊 Yes 繼續(xù)。

然后 Xcode 會(huì)隨即生成一個(gè)名字叫做“SidebarMenu-Bridging-Header.h”的文件,打開這個(gè)文件并將下面的代碼復(fù)制進(jìn)去:

#import "SWRevealViewController.h"
配置前置(顯示內(nèi)容)和后置(菜單欄)視圖控制器
SWRevealViewController 內(nèi)置了對(duì) Storyboard 的支持。你需要做的就是將前置和后置控制器與 SWRevealViewController 用 Segue 聯(lián)系起來(lái)。前置控制器是用來(lái)顯示內(nèi)容的主控制器,在我們的 Storyboard 里面對(duì)應(yīng)的是連接新聞控制器的導(dǎo)航控制器。后置控制器是用來(lái)顯示導(dǎo)航菜單的控制器,這里對(duì)應(yīng)的是側(cè)滑菜單欄。

點(diǎn)開 Storyboard,首先選中那個(gè)空控制器(容器)并把它的類設(shè)置為 SWRevealViewController。


然后,按住Control鍵-鼠標(biāo)左鍵 從 SWRevealViewController 拖拽到菜單控制器,釋放按鍵后悔顯示一個(gè)選擇 Segue 類型的菜單,在這里選擇“reveal view controller set controller”。


這樣就創(chuàng)建了一個(gè) Segue,選中這個(gè) Segue 將它的 identifier 設(shè)置成“sw_rear”;這樣 SWRevealViewController 就知道了它對(duì)應(yīng)的是后置控制器,這個(gè)菜單就會(huì)隱藏在內(nèi)容視圖的后面。

接下來(lái),用同樣的方法將 SWRevealViewController 和新聞控制器對(duì)應(yīng)的導(dǎo)航控制器聯(lián)系起來(lái),也是選擇“reveal view controller set controller”選項(xiàng)。

把這個(gè) Segue 的 identifier 設(shè)置成“sw_front”,告訴 SWRevealViewController 這是前置控制器。
繼續(xù)之前,運(yùn)行一下你的 App,它應(yīng)該是能正常顯示新聞視圖。但是你點(diǎn)擊按鈕或者滑動(dòng)視圖都不能把菜單欄調(diào)出來(lái),這是因?yàn)槲覀冞€沒有實(shí)現(xiàn)這些功能。

如果程序運(yùn)行正常,我們繼續(xù)下面的步驟。打開 NewsTableViewController.swift,在 viewDidLoad 這個(gè)方法里面插入下面的代碼:

if self.revealViewController() != nil {
 menuButton.target = self.revealViewController()
 menuButton.action = "revealToggle:"
 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

SWRevealViewController 提供了一個(gè)叫 revealViewController() 的方法來(lái)從任何子控制器中拿到父控制器 SWRevealViewController;它還提供了一個(gè)叫 revealToggle: 的方法來(lái) 顯示/隱藏 菜單欄,最后我們添加了一個(gè)手勢(shì)。

現(xiàn)在你既可以點(diǎn)擊按鈕來(lái)控制側(cè)滑菜單,也可以滑動(dòng)內(nèi)容視圖的區(qū)域來(lái)控制側(cè)滑菜單了;跑起模擬器試一下吧。

添加側(cè)滑菜單的點(diǎn)擊事件
到現(xiàn)在為止,我們還沒有為菜單欄配置任何 Segue;所以不管你點(diǎn)擊哪一個(gè)菜單項(xiàng),App 總是不能切換到相符的那個(gè)視圖。

那么,現(xiàn)在我們?cè)俅吸c(diǎn)開 Storyboard。首先選中地圖Cell,按住按住 Control 鍵-鼠標(biāo)左鍵 拖拽到地圖控制器對(duì)應(yīng)的導(dǎo)航控制器,然后選擇“reveal view controller push controller”。對(duì)新聞 Cell 和照片 Cell 也做相同的操作,不過(guò)連接的時(shí)它們各自對(duì)應(yīng)的控制器。


然后,在 MapViewController.swift 和 PhotoViewController.swift 兩個(gè)文件中,對(duì)應(yīng)也插入下面的代碼:

if self.revealViewController() != nil {
 menuButton.target = self.revealViewController()
 menuButton.action = "revealToggle:"
 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

OK!運(yùn)行起來(lái)看一下吧。

定制樣式
SWRevealViewController 提供了很多方法來(lái)配置菜單欄的樣式。

比如你想更改菜單欄的寬度,你就可以更新 rearViewRevealWidth 屬性的值即可。試著在 NewsTableViewController.swift 文件的 viewDidLoad 方法里插入下面的代碼:

self.revealViewController().rearViewRevealWidth = 62
運(yùn)行 App 之后你會(huì)看到這樣的結(jié)果:


更多的參數(shù)設(shè)置,你可以去文件 SWRevealViewController.h 里面去摸索一下。

其實(shí)這只是實(shí)現(xiàn)側(cè)滑菜單的很多方法中的一種,你也可以試著自己從空項(xiàng)目開始寫,使用自定義的動(dòng)畫去實(shí)現(xiàn);或者是尋找別的開源類庫(kù)去實(shí)現(xiàn),比如ENSwiftSideMenu。

相關(guān)文章

  • Swift中static和class關(guān)鍵字的深入講解

    Swift中static和class關(guān)鍵字的深入講解

    這篇文章主要給大家介紹了關(guān)于Swift中static和class關(guān)鍵字的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Swift與C語(yǔ)言指針結(jié)合使用實(shí)例

    Swift與C語(yǔ)言指針結(jié)合使用實(shí)例

    這篇文章主要介紹了Swift與C語(yǔ)言指針結(jié)合使用實(shí)例,本文講解了用以輸入/輸出的參數(shù)指針、作為數(shù)組使用的參數(shù)指針、用作字符串參數(shù)的指針、指針參數(shù)轉(zhuǎn)換的安全性等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • iOS UITableView展開縮放動(dòng)畫實(shí)例代碼

    iOS UITableView展開縮放動(dòng)畫實(shí)例代碼

    這篇文章主要介紹了Swift UITableView展開縮放動(dòng)畫實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    Swift 4中一些實(shí)用的數(shù)組技巧小結(jié)

    這篇文章主要給大家分享了關(guān)于Swift 4中一些實(shí)用的數(shù)組技巧,文中通過(guò)示例代碼介紹的介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用swift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • RxSwift學(xué)習(xí)之Observable的新建、訂閱及取消訂閱

    RxSwift學(xué)習(xí)之Observable的新建、訂閱及取消訂閱

    這篇文章主要給大家介紹了關(guān)于RxSwift學(xué)習(xí)教程之Observable的相關(guān)資料,文中詳細(xì)的給大家介紹了關(guān)于新建Observable、訂閱Observable和取消訂閱并消除內(nèi)存泄漏等相關(guān)的內(nèi)容,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • Swift網(wǎng)絡(luò)請(qǐng)求庫(kù)Alamofire使用詳解

    Swift網(wǎng)絡(luò)請(qǐng)求庫(kù)Alamofire使用詳解

    這篇文章主要為大家詳細(xì)介紹了Swift網(wǎng)絡(luò)請(qǐng)求庫(kù)Alamofire的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Swift實(shí)現(xiàn)文件壓縮和解壓示例代碼

    Swift實(shí)現(xiàn)文件壓縮和解壓示例代碼

    本篇文章主要介紹了Swift實(shí)現(xiàn)文件壓縮和解壓示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Swift縮放并填充圖片功能的實(shí)現(xiàn)

    Swift縮放并填充圖片功能的實(shí)現(xiàn)

    最近有一個(gè)需求,就是將圖片先等比例縮放到指定大小,然后將空余出來(lái)空間填充為黑色,返回指定大小的圖片。本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • 實(shí)例講解Swift中引用類型的ARC自動(dòng)引用計(jì)數(shù)

    實(shí)例講解Swift中引用類型的ARC自動(dòng)引用計(jì)數(shù)

    自動(dòng)引用計(jì)數(shù)是在Objective-C中就有的特性,用來(lái)輔助管理對(duì)象的引用,這里我們就來(lái)以實(shí)例講解Swift中引用類型的ARC自動(dòng)引用計(jì)數(shù):
    2016-07-07
  • Swift中的命名空間詳解

    Swift中的命名空間詳解

    這篇文章主要給大家介紹了關(guān)于Swift中命名空間的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12

最新評(píng)論