Swift4になってSlideMenuControllerSwiftを入れてみたらエラーのお祭りだったので、swift4対応方法について。
- cocoapodでSlideMenuControllerSwiftをインストール
- ViewController追加
- StoryBoard追加
- StoryBoardId設定
- ViewControllerの中身
- その他
cocoapodでSlideMenuControllerSwiftをインストール
swift4というブランチがあるのでそれを指定。
Podfile.rb
frameworks use_frameworks! # Pods for k-curation-ios pod 'Firebase/Database’ pod ‘RxCocoa’ pod ‘RxSwift’ pod 'SlideMenuControllerSwift', :git => 'https://github.com/dekatotoro/SlideMenuControllerSwift', :branch => 'swift4'
ViewController追加
以下のViewControllerを追加します
- MainViewController
- SlideViewController
- LeftMenuViewController
StoryBoard追加
StoryBoardId設定
ViewControllerの中身
SlideViewController
import UIKit import SlideMenuControllerSwift class SlideViewController: SlideMenuController { override func awakeFromNib() { let mainVC = storyboard?.instantiateViewController(withIdentifier: "Main") let leftVC = storyboard?.instantiateViewController(withIdentifier: "Left") //NavigationBarを生成 let navigationController = UINavigationController(rootViewController: mainVC!) navigationController.navigationBar.barTintColor = UIColor.colorWithHexString("0033FF") navigationController.navigationBar.tintColor = UIColor.white navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white] //ライブラリ特有のプロパティにセット mainViewController = navigationController leftViewController = leftVC SlideMenuOptions.leftViewWidth = 200 super.awakeFromNib() } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } }
LeftMenuViewController
import UIKit class LeftMenuViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } }
MainListViewController
import SlideMenuControllerSwift class MainViewController: UIViewController { ... @objc private func didTapMenuIcon() { self.slideMenuController()?.openLeft() } ... }
その他
メニューの開閉操作
(ボタンイベントなどで)メニューをOpen
self.slideMenuController()?.openLeft()
(ボタンイベントなどで)メニューをClose
self.slideMenuController()?.closeLeft()
settingプロパティ
SlideMenuOptions
leftViewWidth: CGFloat = 270.0
- 左メニューの横幅
rightViewWidth: CGFloat = 270.0
- 右メニューの横幅
leftBezelWidth: CGFloat? = 16.0
- 画面スワイプ時に感知する左からの横幅
rightBezelWidth: CGFloat? = 16.0
- 画面スワイプ時に感知する右からの横幅
rightPanFromBezel: Bool = true
- falseにするとスワイプでメニューを開くことができなくなる
contentViewScale: CGFloat = 0.96
- メニューを開いた時のmainVCの縮み率
opacityViewBackgroundColor: UIColor = UIColor.black
- メニューを開いた時のmainVCにかかる色
contentViewOpacity: CGFloat = 0.5
- メニューを開いた時のmainVCにかかる色のalpha値
contentViewDrag: Bool = false
- メニューを開いた時にmainVCがメニューのwidth分ずれて表示されるかどうか
shadowOpacity: CGFloat = 0
- 影の明るさ(0)
shadowRadius: CGFloat = 0
- 影のぼかし具合(0)
shadowOffset: CGSize = CGSize.zero
- 矩形からどれだけ影がずれているか
panFromBezel: Bool = true
- 画面スワイプでメニューを出せるかどうか
animationDuration: CGFloat = 0.4
- メニューを出す速度
hideStatusBar: Bool = true
- ステータスバーを隠すかどうか
simultaneousGestureRecognizers: Bool = true
- 複数のジェスチャーに対応するかどうか
panGesturesEnabled: Bool = true
- スワイプでのメニュー開閉動作が可能かどうか
tapGesturesEnabled: Bool = true
- タップでのメニューを閉じる動作が可能かどうか
メニューの状態を監視するときはSlideMenuControllerDelegateを使う
- func leftWillOpen ()
- func leftDidOpen ()
- func leftWillClose ()
- func leftDidClose ()
- func rightWillOpen ()
- func rightDidOpen ()
- func rightWillClose ()
- func rightDidClose ()
絶対に挫折しないiPhoneアプリ開発「超」入門 第7版 【Xcode 10 & iOS 12】 完全対応 (Informatics&IDEA)
- 作者: 高橋京介
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2018/11/22
- メディア: 単行本
- この商品を含むブログを見る
[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
- 作者: 石川洋資,西山勇世
- 出版社/メーカー: 技術評論社
- 発売日: 2018/01/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る