一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Swift - Swift項目中利用SWRevealViewController實現側滑菜單

Swift項目中利用SWRevealViewController實現側滑菜單

2020-12-24 15:35王哼哼 Swift

這篇文章主要介紹了Swift項目中利用SWRevealViewController實現側滑菜單,需要的朋友可以參考下

像往常一樣,我們還是創建一個Demo App 來展示一下具體如何使用SWRevealViewController。這個Demo 很簡單,功能上也不完善,主要的目的只是引導你去了解如何實現側滑菜單。

我們將要實現的側滑菜單大概是這個樣子的:

  • 用戶可以單擊左上角的列表按鈕來顯示側滑菜單
  • 用戶也可以右滑內容視圖來顯示側滑菜單
  • 側滑菜單顯示的時候,用戶可以再次單擊列表按鈕來關閉它
  • 用戶也可以左滑內容區域來關閉它

Swift項目中利用SWRevealViewController實現側滑菜單

新建一個 Xcode 項目
這篇文章的主要目的是講解側滑菜單的實現,所以為了節省你的時間,你可以直接下載這個Xcode模板來開始學習。

這個工程里面已經創建好了一個 Storyboard,它包含了所有我們需要的視圖控制器。如果你已經下載好了模板,那么先打開 Storyboard 來看一下。

Swift項目中利用SWRevealViewController實現側滑菜單

想要使用 SWRevealViewController 來實現側滑菜單,你需要有一個控制器做容器,用它來存放菜單控制器和一組內容控制器。我已經為你創建好了菜單控制器,它是一個靜態的列表視圖,有三行內容。對應的有三個內容控制器來分別展示新聞、地圖和照片。鑒于這個 Demo 只是演示的目的,內容控制器里放置的都是靜態內容。所有用到的圖標和圖片資源都已經包含在了工程里面(注:在這里需要感謝Pixeden網站提供的免費圖標)。

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

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

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

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

Swift項目中利用SWRevealViewController實現側滑菜單

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

Swift項目中利用SWRevealViewController實現側滑菜單

這樣就創建了一個 Segue,選中這個 Segue 將它的 identifier 設置成“sw_rear”;這樣 SWRevealViewController 就知道了它對應的是后置控制器,這個菜單就會隱藏在內容視圖的后面。

接下來,用同樣的方法將 SWRevealViewController 和新聞控制器對應的導航控制器聯系起來,也是選擇“reveal view controller set controller”選項。

Swift項目中利用SWRevealViewController實現側滑菜單

把這個 Segue 的 identifier 設置成“sw_front”,告訴 SWRevealViewController 這是前置控制器。
繼續之前,運行一下你的 App,它應該是能正常顯示新聞視圖。但是你點擊按鈕或者滑動視圖都不能把菜單欄調出來,這是因為我們還沒有實現這些功能。

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

?
1
2
3
4
5
if self.revealViewController() != nil {
 menuButton.target = self.revealViewController()
 menuButton.action = "revealToggle:"
 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

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

現在你既可以點擊按鈕來控制側滑菜單,也可以滑動內容視圖的區域來控制側滑菜單了;跑起模擬器試一下吧。

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

那么,現在我們再次點開 Storyboard。首先選中地圖Cell,按住按住 Control 鍵-鼠標左鍵 拖拽到地圖控制器對應的導航控制器,然后選擇“reveal view controller push controller”。對新聞 Cell 和照片 Cell 也做相同的操作,不過連接的時它們各自對應的控制器。

Swift項目中利用SWRevealViewController實現側滑菜單

然后,在 MapViewController.swift 和 PhotoViewController.swift 兩個文件中,對應也插入下面的代碼:

?
1
2
3
4
5
if self.revealViewController() != nil {
 menuButton.target = self.revealViewController()
 menuButton.action = "revealToggle:"
 self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

OK!運行起來看一下吧。

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

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

self.revealViewController().rearViewRevealWidth = 62
運行 App 之后你會看到這樣的結果:

Swift項目中利用SWRevealViewController實現側滑菜單

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

其實這只是實現側滑菜單的很多方法中的一種,你也可以試著自己從空項目開始寫,使用自定義的動畫去實現;或者是尋找別的開源類庫去實現,比如ENSwiftSideMenu。

延伸 · 閱讀

精彩推薦
  • SwiftSwift使用CollectionView實現廣告欄滑動效果

    Swift使用CollectionView實現廣告欄滑動效果

    這篇文章主要為大家詳細介紹了Swift使用CollectionView實現廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Stevin的技術博客12372021-01-13
  • Swiftmac git xcrun error active developer path 錯誤

    mac git xcrun error active developer path 錯誤

    本文主要是講訴了如何解決在mac下使用git;xcode4.6的環境時,出現了錯誤(mac git xcrun error active developer path)的解決辦法,希望對大家有所幫助...

    Swift教程網2232020-12-16
  • SwiftSwift中轉義閉包示例詳解

    Swift中轉義閉包示例詳解

    在Swift 中的閉包類似于結構塊,并可以在任何地方調用,下面這篇文章主要給大家介紹了關于Swift中轉義閉包的相關資料,需要的朋友可以參考下...

    小小小_小朋友11412021-12-26
  • Swiftswift where與匹配模式的實例詳解

    swift where與匹配模式的實例詳解

    這篇文章主要介紹了swift where與匹配模式的實例詳解的相關資料,這里附有簡單的示例代碼,講的比較清楚,需要的朋友可以參考下...

    追到夢的魔術師14382021-01-06
  • SwiftSwift的74個常用內置函數介紹

    Swift的74個常用內置函數介紹

    這篇文章主要介紹了Swift的74個常用內置函數介紹,這篇文章列舉出了所有的Swift庫函數,內置函數是指無需引入任何模塊即可以直接使用的函數,需要的朋友可...

    Swift教程網5802020-12-19
  • SwiftSwift實現多個TableView側滑與切換效果

    Swift實現多個TableView側滑與切換效果

    這篇文章主要為大家詳細介紹了Swift實現多個TableView側滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    乞力馬扎羅的雪雪5822021-01-08
  • SwiftSwift教程之基礎數據類型詳解

    Swift教程之基礎數據類型詳解

    這篇文章主要介紹了Swift教程之基礎數據類型詳解,本文詳細講解了Swift中的基本數據類型和基本語法,例如常量和變量、注釋、分號、整數、數值類型轉換等...

    Swift教程網5162020-12-18
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網上上看到的答案,復制粘貼過來和大家分享一下,因為我和很多人一樣很關心Swift的出現對Mac開發的影響和對Objective-C的影響。...

    Swift教程網4412020-12-16
主站蜘蛛池模板: 性夜影院午夜看片 | 91短视频破解版 | 久久精品中文闷骚内射 | 性奴公司 警花 | 日本免费不卡在线一区二区三区 | 亚洲图片 自拍偷拍 | 亚洲成人网在线 | 国产精品青青青高清在线观看 | 天天曰 | 九九影院午夜理论片无码 | 日韩精品免费一区二区三区 | 草草影院永久在线观看 | 国产日韩免费视频 | 短篇最污的乱淫伦小说全集 | 四虎影视4hu最新地址在线884 | 无人区1在线观看 | 国产成人h综合亚洲欧美在线 | 国产精品一区二区国产 | 99热这里只有精品国产免费 | 亚洲香蕉伊在人在线观婷婷 | 免费一级特黄特色大片在线观看 | 日本在线视频网址 | 日韩性生活片 | 午夜 在线播放 | 精品日韩二区三区精品视频 | 免费观看www视频 | 不卡视频一区二区 | 亚洲系列国产精品制服丝袜第 | chinese老头和老太交hd | 亚洲欧美国产另类视频 | 国产性色视频 | 波多野给衣一区二区三区 | 国产区香蕉精品系列在线观看不卡 | 俄罗斯美女大逼 | 四神集团1涨奶是第几章 | 天堂8在线天堂资源在线 | 久久精品成人免费网站 | 成人在线免费看 | 无套大战白嫩乌克兰美女 | 欧美另类videos另类粗暴 | 色悠久久久久综合欧美99 |