Swift-左右側(cè)滑菜單.gif
這是我之前寫的項(xiàng)目中用到過的一個(gè)側(cè)滑菜單庫曙咽,今天又把他做成了是一個(gè)Demo去枷,拿來和大家分享久免。
首先底瓣,新建一個(gè)Podfile文件谢揪,pod 'KGFloatingDrawer' 這個(gè)庫
platform :ios, '9.0'
use_frameworks!
target 'Swift-左右側(cè)滑菜單' do
pod 'KGFloatingDrawer', '~> 0.2.0'
end
然后在你的AppDelegate中import KGFloatingDrawer
import UIKit
import KGFloatingDrawer
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
/*你storyboard的名字*/
let kKGDrawersStoryboardName = "Main"
/*想設(shè)置的背景圖片的名字*/
let backgroundImgName = "login3"
/*主視圖StoryboardId*/
let kKGDrawerSettingsViewControllerStoryboardId = "center"
/*左視圖StoryboardId*/
let kKGLeftDrawerStoryboardId = "left"
/*右視圖StoryboardId*/
let kKGRightDrawerStoryboardId = "right"
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.rootViewController = drawerViewController
window?.makeKeyAndVisible()
return true
}
/*
*****************
* * *
*****************
*/
private var _drawerViewController: KGDrawerViewController?
var drawerViewController: KGDrawerViewController {
get {
if let viewController = _drawerViewController {
return viewController
}
return prepareDrawerViewController()
}
}
func prepareDrawerViewController() -> KGDrawerViewController {
let drawerViewController = KGDrawerViewController()
drawerViewController.centerViewController = drawerSettingsViewController()
drawerViewController.leftViewController = leftViewController()
drawerViewController.rightViewController = rightViewController()
drawerViewController.backgroundImage = UIImage(named: backgroundImgName)
_drawerViewController = drawerViewController
return drawerViewController
}
private func drawerStoryboard() -> UIStoryboard {
let storyboard = UIStoryboard(name: kKGDrawersStoryboardName, bundle: nil)
return storyboard
}
private func viewControllerForStoryboardId(storyboardId: String) -> UIViewController {
let viewController: UIViewController = drawerStoryboard().instantiateViewControllerWithIdentifier(storyboardId)
return viewController
}
func drawerSettingsViewController() -> UIViewController {
let viewController = viewControllerForStoryboardId(kKGDrawerSettingsViewControllerStoryboardId)
return viewController
}
private func leftViewController() -> UIViewController {
let viewController = viewControllerForStoryboardId(kKGLeftDrawerStoryboardId)
return viewController
}
private func rightViewController() -> UIViewController {
let viewController = viewControllerForStoryboardId(kKGRightDrawerStoryboardId)
return viewController
}
func toggleLeftDrawer(sender:AnyObject, animated:Bool) {
_drawerViewController?.toggleDrawer(.Left, animated: true, complete: { (finished) -> Void in
// do nothing
})
}
func toggleRightDrawer(sender:AnyObject, animated:Bool) {
_drawerViewController?.toggleDrawer(.Right, animated: true, complete: { (finished) -> Void in
// do nothing
})
}
private var _centerViewController: UIViewController?
var centerViewController: UIViewController {
get {
if let viewController = _centerViewController {
return viewController
}
return drawerSettingsViewController()
}
set {
if let drawerViewController = _drawerViewController {
drawerViewController.closeDrawer(drawerViewController.currentlyOpenedSide, animated: true) { finished in }
if drawerViewController.centerViewController != newValue {
drawerViewController.centerViewController = newValue
}
}
_centerViewController = newValue
}
}
/*
*****************
* * *
*****************
*/
之后像我圖片這樣創(chuàng)建一個(gè)主視圖,一個(gè)左視圖捐凭,和一個(gè)右視圖拨扶,并設(shè)置設(shè)置storyboard ID
側(cè)滑菜單.png
最后給左右兩個(gè)按鈕綁定滑動(dòng)事件
import UIKit
import KGFloatingDrawer
class ViewController: UIViewController {
/*左滑動(dòng)按鈕*/
@IBAction func left(sender: UIBarButtonItem) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.drawerViewController.toggleDrawer(KGDrawerSide.Left, animated: true) { (finished) -> Void
in
}
}
/*右滑動(dòng)按鈕*/
@IBAction func right(sender: UIBarButtonItem) {
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
appDelegate.drawerViewController.toggleDrawer(KGDrawerSide.Right, animated: true) { (finished) -> Void
in
}
}
OK,搞定茁肠!