亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

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

2020-03-09 17:49:15
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了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 這個方法里面插入下面的代碼:

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 兩個文件中,對應也插入下面的代碼:

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。



注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩精品丝袜在线| 伊人久久久久久久久久久| 欧美日韩国产丝袜美女| 亚洲女人天堂视频| 欧美激情喷水视频| 成人在线激情视频| 国产日韩欧美日韩大片| 日韩av在线影院| 久久夜色精品国产欧美乱| 亚洲国产欧美在线成人app| 亚洲国产精彩中文乱码av| 欧美在线观看网站| 久久久久99精品久久久久| 国产a∨精品一区二区三区不卡| 91在线播放国产| 成人激情视频在线| 欧美性生活大片免费观看网址| 狠狠色狠狠色综合日日五| 欧美日韩国产成人高清视频| 久久精品青青大伊人av| 欧美激情第1页| 国产女精品视频网站免费| 成人激情视频免费在线| 国产69精品久久久久9999| 色老头一区二区三区| 日本亚洲欧洲色α| 久久视频在线视频| 亚洲成人a级网| 成人深夜直播免费观看| 欧美精品一本久久男人的天堂| 78m国产成人精品视频| 中文字幕亚洲天堂| 亚洲高清一区二| 亚洲美女免费精品视频在线观看| 亚洲免费中文字幕| 国产精品亚洲美女av网站| 久久夜色精品国产欧美乱| 亚洲欧美日韩在线高清直播| 亚洲一区中文字幕| 国产精品久久久久影院日本| 2019最新中文字幕| 在线电影av不卡网址| 欧美激情精品在线| 日韩中文字幕精品视频| 国产免费久久av| 91天堂在线观看| 久久久精品欧美| 亚洲电影免费观看| 国产精品视频一区国模私拍| 亚洲午夜国产成人av电影男同| 欧美激情手机在线视频| 国产精品爱久久久久久久| 欧美激情视频免费观看| 国产女同一区二区| 亚洲精品第一国产综合精品| 国产视频综合在线| 日韩精品免费电影| 亚洲自拍中文字幕| 国产欧美日韩最新| 国产女人18毛片水18精品| 韩国福利视频一区| 亚洲国产精久久久久久| 欧美电影免费观看网站| 91日本在线观看| 久久精品2019中文字幕| 黄色精品一区二区| 亚洲奶大毛多的老太婆| 亚洲精品www久久久久久广东| 色与欲影视天天看综合网| 亚洲第一在线视频| 日韩69视频在线观看| 最近的2019中文字幕免费一页| 精品偷拍一区二区三区在线看| 热久久免费视频精品| 中文一区二区视频| 日本不卡高字幕在线2019| 中文字幕日韩精品在线观看| 国产亚洲综合久久| 久久精品中文字幕免费mv| 欧美有码在线观看| 久久精品最新地址| 欧美视频一二三| 91精品国产91久久久久福利| 国产精品高潮呻吟久久av无限| 久久香蕉精品香蕉| 这里只有精品视频| 伊人久久五月天| 奇米4444一区二区三区| 亚洲片国产一区一级在线观看| 欧美丰满片xxx777| 久操成人在线视频| 欧洲永久精品大片ww免费漫画| 亚洲成人黄色在线观看| 亚洲国产天堂久久综合网| 欧美一区二粉嫩精品国产一线天| 亚洲国产日韩欧美在线99| 91成人天堂久久成人| 亚洲一区二区久久久| 欧美性感美女h网站在线观看免费| 国产经典一区二区| 在线观看国产成人av片| 66m—66摸成人免费视频| 久久99国产综合精品女同| 国产一区二区三区网站| 中文字幕亚洲精品| 久久久欧美一区二区| 国产精品草莓在线免费观看| 亚洲天堂av在线免费观看| 日韩一区二区三区国产| 国产精品免费视频xxxx| 日韩精品在线免费观看| 国产精品看片资源| 久99久在线视频| 国产一区二区三区视频| 91免费在线视频| 日韩综合视频在线观看| 欧美成人在线影院| 精品久久中文字幕久久av| 亚洲精品福利视频| 亚洲人成在线一二| 国产日韩精品一区二区| 精品亚洲一区二区三区| 欧美日韩爱爱视频| 亚洲亚裔videos黑人hd| 中文字幕日韩免费视频| 久久人人爽国产| 久精品免费视频| 成人黄色中文字幕| 亚洲人精选亚洲人成在线| 欧美猛交免费看| 不用播放器成人网| 欧美巨大黑人极品精男| 中文字幕欧美日韩在线| 国产欧美日韩中文| 日韩视频免费看| 成年人精品视频| 狠狠躁18三区二区一区| 色樱桃影院亚洲精品影院| 国产精品中文在线| 91麻豆国产语对白在线观看| 日韩欧美在线网址| 欧美在线视频免费观看| 久久影视电视剧免费网站清宫辞电视| 4p变态网欧美系列| www欧美xxxx| 亚洲人精品午夜在线观看| 91欧美日韩一区| 亚洲国产精品女人久久久| 亚洲www永久成人夜色| 96sao精品视频在线观看| 中文字幕亚洲欧美一区二区三区| 亚洲国产成人久久综合| 91产国在线观看动作片喷水| 国产精品成人免费电影| 日韩电影在线观看免费| 欧美日韩亚洲精品一区二区三区| 久久久国产精品视频| 91国产精品电影| 欧洲日本亚洲国产区| 97香蕉久久超级碰碰高清版| 97在线观看免费高清| 亚洲free性xxxx护士hd| 91免费人成网站在线观看18| 一个人www欧美|