Version Swift5 Carthage compatible License Platform

概述

SideMenu 是一个易于使用的侧边菜单容器控制器,使用 Swift 5 编写。

除了侧边菜单应有的所有功能外,它还支持

预览

菜单位置 / 状态菜单行为

上方 + 无 下方 + 滑动
并排 + 淡入淡出 并排 + 菜单时隐藏

我们称左/右视图控制器为菜单视图控制器,中心视图控制器为内容视图控制器。

安装

对于 Swift 5.0 及更高版本,请使用 2.0.0 或更高版本。

CocoaPods

要使用 CocoaPods 安装 SideMenu,请在您的 Podfile 中添加以下行

pod 'SideMenuSwift'
# Note it's NOT 'SideMenu'

Carthage

要使用 Carthage 安装 SideMenu,请在您的 Cartfile 中添加以下行

github "kukushi/SideMenu" "master"

Swift Package Manager

  1. 在您项目的 Package Description 中,单击 + 以添加新软件包。
  2. https://github.com/kukushi/SideMenu.git 粘贴到搜索字段中。
  3. Add to Project 选择框中选择要集成的项目。
  4. 点击 Add Package
  5. 请注意,您应该使用 import SideMenu 来导入 SideMenu

用法

Storyboard

要在 Storyboard 中设置 SideMenu
  1. 打开视图控制器的Identity inspector。将其 Class 更改为 SideMenuControllerModule 更改为 SideMenuSwift
  2. 在您的 Storyboard 中设置菜单视图控制器和初始内容视图控制器。从 SideMenuController 为它们分别添加一个 Custom segue。
    • 将菜单 segue 的标识符更改为 SideMenu.MenuClass 更改为 SideMenuSegueModule 更改为 SideMenuSwift
    • 将内容 segue 的标识符更改为 SideMenu.ContentClass 更改为 SideMenuSegueModule 更改为 SideMenuSwift
  3. (可选)如果您想使用自定义 segue 标识符
    • 打开 SideMenuControllerAttribute inspector
    • Side Menu Controller 部分,将 *Content SegueID/Menu SegueID* 修改为所需的值,并更改相应的 segue 标识符。
  4. 完成了。查看此屏幕截图以获得清晰的视图。

编程方式

要以编程方式启动带有 SideMenu 的应用程序
import UIKit
import SideMenuSwift
// If you are using Carthage, uses `import SideMenu`

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    @objc func applicationDidFinishLaunching(_ application: UIApplication) {
        let contentViewController = ...
        let menuViewController = ...

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = SideMenuController(contentViewController: contentViewController, 
        menuViewController: menuViewController)
        
        window?.makeKeyAndVisible()
        return true
    }
}

使用 UIViewController 扩展中提供的 sideMenuController 方法来获取父 SideMenuController

viewController.sideMenuController?.revealMenu()

首选项

SideMenu 的所有偏好设置都可以在 SideMenuController.preferences 中找到。建议查看 Example 以了解这些选项将如何生效。

SideMenuController.preferences.basic.menuWidth = 240
SideMenuController.preferences.basic.statusBarBehavior = .hideOnMenu
SideMenuController.preferences.basic.position = .below
SideMenuController.preferences.basic.direction = .left
SideMenuController.preferences.basic.enablePanGesture = true
SideMenuController.preferences.basic.supportedOrientations = .portrait
SideMenuController.preferences.basic.shouldRespectLanguageDirection = true

// See a lot more options on `Preferences.swift`.

缓存内容

SideMenu 最酷的功能之一是缓存。

// Cache the view controllers somewhere in your code
sideMenuController?.cache(viewController: secondViewController, with: "second")
sideMenuController?.cache(viewController: thirdViewController, with: "third")

// Switch to it when needed
sideMenuController?.setContentViewController(with: "second")

从 Storyboard 初始化的内容视图控制器呢?我们可以使用偏好设置来为其应用默认键!

SideMenuController.preferences.basic.defaultCacheKey = "default"

如果我们不想这么早加载所有内容视图控制器怎么办?我们可以使用延迟缓存

sideMenuController?.cache(viewControllerGenerator: { self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController") }, with: "second")
sideMenuController?.cache(viewControllerGenerator: { self.storyboard?.instantiateViewController(withIdentifier: "ThirdViewController") }, with: "third")

系统要求

许可证

SideMenu 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。