[Swift]左右侧边栏

DEMO:http://download.csdn.net/detail/u012881779/9226539

应用入口(AppDelegate.swift


import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.backgroundColor = UIColor.whiteColor()
        
        let sidebar = DMSidebarViewController()
        let nav = UINavigationController(rootViewController: sidebar)
        nav.navigationBarHidden = true
        window?.rootViewController = nav
        
        window?.makeKeyAndVisible()
        
        return true
    }

    func applicationWillResignActive(application: UIApplication) {
   }
}

侧栏管理(DMSidebarViewController.swift)


import UIKit

class DMSidebarViewController: UIViewController {
    let LeftWidthFloat  : CGFloat = 150.0;
    let RightWidthFloat : CGFloat = 200.0;
    let screenRect = UIScreen.mainScreen().bounds

    var leftVC  = DMLeftViewController()
    var homeVC  = DMHomeViewController()
    var rightVC = DMRightViewController()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        let screenRect = UIScreen.mainScreen().bounds
        leftVC.view.frame = CGRectMake(-screenRect.size.width, 0, screenRect.size.width, screenRect.size.height)
        leftVC.sidebarVC = self
        self.view.addSubview(leftVC.view)
        
        homeVC.view.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height)
        homeVC.sidebarVC = self
        self.view.addSubview(homeVC.view)
        
        rightVC.view.frame = CGRectMake(screenRect.size.width, 0, screenRect.size.width, screenRect.size.height)
        rightVC.sidebarVC = self
        self.view.addSubview(rightVC.view)
        
    }
    
    //弹出左侧栏
    func popUpLeftAction(){
        UIView.animateWithDuration(0.3, animations: {
            self.leftVC.view.frame = CGRectMake(-self.screenRect.size.width + self.LeftWidthFloat, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.leftVC.view)
            
            self.homeVC.view.frame = CGRectMake(0 + self.LeftWidthFloat, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.homeVC.view)
            
            self.rightVC.view.frame = CGRectMake(self.screenRect.size.width + self.LeftWidthFloat, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.rightVC.view)
            
            }, completion:{(finished : Bool) -> Void in
        
        })
    }
    
    //页面归原位
    func popUpHomeAction(){
        UIView.animateWithDuration(0.3, animations: {
            self.leftVC.view.frame = CGRectMake(-self.screenRect.size.width, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.leftVC.view)
            
            self.homeVC.view.frame = CGRectMake(0, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.homeVC.view)
            
            self.rightVC.view.frame = CGRectMake(self.screenRect.size.width, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.rightVC.view)
            
            }, completion:{(finished : Bool) -> Void in
                
        })
    }
    
    //弹出右侧栏
    func popUpRightAction(){
        UIView.animateWithDuration(0.3, animations: {
            self.leftVC.view.frame = CGRectMake(-self.screenRect.size.width - self.RightWidthFloat, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.leftVC.view)
            
            self.homeVC.view.frame = CGRectMake(0 - self.RightWidthFloat, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.homeVC.view)
            
            self.rightVC.view.frame = CGRectMake(self.screenRect.size.width - self.RightWidthFloat, 0, self.screenRect.size.width, self.screenRect.size.height)
            self.view.addSubview(self.rightVC.view)
            
            }, completion:{(finished : Bool) -> Void in
                
        })
    }
}
 

首页(DMHomeViewController.swift)


import UIKit

class DMHomeViewController: DMBaseViewController {
    var sidebarVC : DMSidebarViewController!
    var leftPanGesture = UISwipeGestureRecognizer()
    var rightPanGesture = UISwipeGestureRecognizer()

    override func viewDidLoad() {
        super.viewDidLoad()

        //向左方向滑动
        leftPanGesture.direction = UISwipeGestureRecognizerDirection.Left
        leftPanGesture.addTarget(self, action: "tapRightSideAction:")
        self.view.addGestureRecognizer(leftPanGesture)
        
        //向右方向滑动
        rightPanGesture.direction = UISwipeGestureRecognizerDirection.Right
        rightPanGesture.addTarget(self, action: "tapLeftSideAction:")
        self.view.addGestureRecognizer(rightPanGesture)
    }

    //点击按钮弹出左边栏
    @IBAction func tapLeftSideAction(sender: AnyObject) {
        if(self.view.frame.origin.x == 0){
            sidebarVC.popUpLeftAction()
        }else{
            sidebarVC.popUpHomeAction()
        }
    }
   
    //点击按钮弹出右边栏
    @IBAction func tapRightSideAction(sender: AnyObject) {
        if(self.view.frame.origin.x == 0){
            sidebarVC.popUpRightAction()
        }else{
            sidebarVC.popUpHomeAction()
        }
    }
}
 

 

 

示意图:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值