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()
}
}
}
示意图: