画面をスワイプして、右や左から出てくるメニュー。
Androidでいう、NavagationDrawer。
iOS,Android両方の開発を行っていると、片方ではOS自体がサポートしているので実装が簡単だけど、もう片方では、サポートしていないなんてことがよくあります。
□MMDrawerController
Objective-Cで利用するなら、このライブラリが使いやすいのですが、Swiftで使おうとすると、Bridging-Header.hを噛ませても、動きません……。
代換として、
□DrawerController
を利用してみます。CocoaPodsからのインストールをしてみましたが、動きません……。
ままならないものです。
どうやら、プログラム自体の問題ではなさそうなので、下記のファイルを直接配置してみます。
- AnimatedMenuButton.swift
- DrawerBarButtonItem.swift
- DrawerController.swift
- DrawerVisualState.swift
で、AppDelegeteに以下のように書きます。
AppDelegate.swift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var drawerViewController: DrawerViewController!
var drawerController: DrawerController!
var noteMainViewController: NoteMainViewController!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// 中央に表示するビューコントローラー
noteMainViewController = NoteMainViewController()
// 左メニューに表示するビューコンローラー(Drawer)
drawerViewController = DrawerViewController()
// ドロワーコントローラーに、左メニューと中央画面をセット
self.drawerController = DrawerController(centerViewController: noteMainViewController, leftDrawerViewController: drawerViewController)
self.drawerController.showsShadows = true // 影付き
self.drawerController.restorationIdentifier = "Drawer"
self.drawerController.maximumLeftDrawerWidth = 240.0 // 幅240
self.drawerController.openDrawerGestureModeMask = .All // タッチ操作を全て受け付ける
self.drawerController.closeDrawerGestureModeMask = .All
self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
let tintColor = UIColor(red: 29 / 255, green: 173 / 255, blue: 234 / 255, alpha: 1.0) // 文字色
self.window!.tintColor = tintColor
// ルートビューにセット
self.window!.rootViewController = self.drawerController
self.window?.makeKeyAndVisible()
return true
}
※検証環境が、iOS8 + Swift1.2と少し古いので、参考までに。