Swift实现侧滑菜单SWRevealViewController

前端之家收集整理的这篇文章主要介绍了Swift实现侧滑菜单SWRevealViewController前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

SWRevealViewController Github下载地址

导入

我这里直接新建一个SWRevealViewController包,然后把代码直接粘贴进入

在桥接文件中导入

#import “SWRevealViewController.h”

使用

编译一下,接着新建一个MainController父容器,继承SWRevealViewController

  1. import UIKit
  2.  
  3. class MainController: SWRevealViewController{
  4.  
  5.  
  6.  
  7. override func viewDidLoad() {
  8. super.viewDidLoad()
  9.  
  10. }
  11.  
  12. override func didReceiveMemoryWarning() {
  13. super.didReceiveMemoryWarning()
  14. // Dispose of any resources that can be recreated.
  15. }
  16.  
  17.  
  18. /*
  19. // MARK: - Navigation
  20.  
  21. // In a storyboard-based application,you will often want to do a little preparation before navigation
  22. override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) {
  23. // Get the new view controller using segue.destinationViewController.
  24. // Pass the selected object to the new view controller.
  25. }
  26. */
  27.  
  28. }

创建左侧菜单栏RightMenuController

  1. import UIKit
  2.  
  3. class RightMenuController: UIViewController {
  4.  
  5. override func viewDidLoad() {
  6. super.viewDidLoad()
  7. self.view.backgroundColor = UIColor.greenColor()
  8. // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } /* // MARK: - Navigation // In a storyboard-based application,you will often want to do a little preparation before navigation override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */ }

在需要打开MainController把初始布局和左侧布局加上

  1. let one = UINavigationController(rootViewController: ViewController())
  2. let view = MainController(rearViewController: RightMenuController(),frontViewController: one)
  3. presentViewC(view)//打开页面方法

在ViewController中加入手势

  1. if self.revealViewController() != nil {
  2. self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
  3. }

运行程序,已经可以看到侧滑菜单实现了

我们也可以增加左侧按钮的点击事件

  1. self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "菜单",style: .Done,target: self.revealViewController(),action: #selector(SWRevealViewController.revealToggle(_:)))

也可以更改菜单栏宽度

  1. self.revealViewController().rearViewRevealWidth = 100

菜单栏切换布局

在RightMenuController中添加两个按钮,并实现方法

  1. import UIKit
  2.  
  3. class RightMenuController: UIViewController {
  4.  
  5. override func viewDidLoad() {
  6. super.viewDidLoad()
  7. self.view.backgroundColor = UIColor.greenColor()
  8. // Do any additional setup after loading the view.
  9.  
  10. let b1 = UIButton(frame: CGRect(x: 0,y: 40,width: 100,height: 40))
  11. b1.setTitle("b1",forState: .Normal)
  12. b1.tag = 1
  13. b1.addTarget(self,action: #selector(self.actionBtn(_:)),forControlEvents: .TouchUpInside)
  14. self.view.addSubview(b1)
  15.  
  16. let b2 = UIButton(frame: CGRect(x: 0,y: 100,height: 40))
  17. b2.setTitle("b2",forState: .Normal)
  18. b2.tag = 2
  19. b2.addTarget(self,forControlEvents: .TouchUpInside)
  20. self.view.addSubview(b2)
  21. }
  22.  
  23. func actionBtn(sender:UIButton){
  24. var ui:UIViewController!
  25. if sender.tag == 1{
  26. ui = ViewController()
  27. }
  28. if sender.tag == 2{
  29. ui = WXController()
  30. }
  31. let main = UINavigationController(rootViewController: ui)
  32. self.revealViewController().pushFrontViewController(main,animated: true)
  33. }
  34.  
  35. override func didReceiveMemoryWarning() {
  36. super.didReceiveMemoryWarning()
  37. // Dispose of any resources that can be recreated.
  38. }
  39.  
  40.  
  41. /* // MARK: - Navigation // In a storyboard-based application,you will often want to do a little preparation before navigation override func prepareForSegue(segue: UIStoryboardSegue,sender: AnyObject?) { // Get the new view controller using segue.destinationViewController. // Pass the selected object to the new view controller. } */
  42.  
  43. }

在WXCotroller中写入和ViewController相同的代码

  1. self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "菜单",action: #selector(SWRevealViewController.revealToggle(_:)))
  2. self.view.backgroundColor = UIColor.whiteColor()
  3. self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())

运行效果

SWRevealViewController包中还可以实现右侧菜单,两重菜单,这里就不说了。

猜你在找的Swift相关文章