为此,您可以使用SlideMenuControllerSwift而不是SWRevealViewController
在任何情况下它都可以正常工作,您的情况非常简单,平移手势已经用于地图,所以当您尝试使用菜单时它不起作用。
对于实施,SlideMenuControllerSwift
您需要执行以下操作,
在你的 pod 文件中添加 pod,
pod 'SlideMenuControllerSwift'
成功安装后添加两个视图控制器YourMapVC
,LeftMenuVC
并在您的AppDelegate
文件中添加以下方法,
func createMenu() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let yourMapVC = storyboard.instantiateViewController(withIdentifier: "YourMapVC") as! YourMapVC
let leftMenuVC = storyboard.instantiateViewController(withIdentifier: "LeftMenuVC") as! LeftMenuVC
let nvc = UINavigationController(rootViewController: yourMapVC)
let slideMenuController = SlideMenuController(mainViewController: nvc, leftMenuViewController: leftMenuVC, rightMenuViewController: UIViewController())
slideMenuController.automaticallyAdjustsScrollViewInsets = true
self.window?.backgroundColor = UIColor(red: 236.0, green: 238.0, blue: 241.0, alpha: 1.0)
self.window?.rootViewController = slideMenuController
self.window?.makeKeyAndVisible()
}
在您的didFinishLaunchingWithOptions
方法中调用上述方法之后,AppDelegate
如下所示,
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
self.createMenu()
return true
}
UINavigationBar
用于在项目中的任何位置添加菜单按钮。
extension UIViewController {
func setupNagivationBar() {
self.removeNavigationBarItem()
self.setNavigationBarItem()
}
func setNavigationBarItem() {
self.slideMenuController()?.removeLeftGestures()
self.slideMenuController()?.removeRightGestures()
self.addLeftBarButtonWithImage(UIImage(named: "icon_menu")!)
self.slideMenuController()?.addLeftGestures()
self.slideMenuController()?.removeRightGestures()
self.slideMenuController()?.closeRight()
self.navigationController?.navigationBar.barTintColor = UIColor.gray
}
func removeNavigationBarItem() {
self.navigationItem.leftBarButtonItem = nil
self.navigationItem.rightBarButtonItem = nil
self.slideMenuController()?.removeLeftGestures()
self.slideMenuController()?.removeRightGestures()
}
}
setupNagivationBar()
并在您的方法中调用该YourMapVC
viewDidLoad
方法。
class YourMapVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.setupNagivationBar()
}
}
您还需要将 icon_menu 图像放入您的项目中。
以下是您可以在屏幕截图中看到的结果。
以下是教程链接,
https://github.com/dekatotoro/SlideMenuControllerSwift