LoginSignup
9
10

More than 5 years have passed since last update.

ドロワーメニュー(MMDrawerController)を、Swiftで使う

Posted at

画面をスワイプして、右や左から出てくるメニュー。
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と少し古いので、参考までに。

参照

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10