SideMenuSwift 2.1.1

SideMenuSwift 2.1.1

kukushi 维护。



  • 作者
  • kukushi

Version Swift5 Carthage compatible License Platform

概述

SideMenu 是用 Swift 5 编写的简单易用的侧边菜单容器控制器。

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

  • 四种不同的状态栏行为(iOS 12 及更早版本)
  • 三种不同的菜单位置
  • 支持 Storyboard 和编程方式
  • 缓存内容视图控制器和懒加载初始化
  • 拖动时的回弹效果
  • 自定义过渡动画
  • 支持自右向左(RTL)
  • API 参考

预览

菜单位置/状态栏菜单行为

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

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

安装

对于 Swift 5,请使用 2.0.0 或更高版本的版本。

对于 Swift 4.0,请使用 0.5.1 或更早期的版本。对于 Swift 4.2,请使用 1.x 版本。

CocoaPods

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

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

Carthage

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

github "kukushi/SideMenu" "master"

用法

Storyboard

要将`SideMenu`设置为Storyboard中的布局
  1. 打开视图控制器的identity inspector。将其Class更改为SideMenuControllerModule更改为SideMenuSwift
  2. 在Storyboard中设置菜单视图控制器和初始内容视图控制器。从SideMenuController到每个控制器添加一个Custom segue。
    • 将菜单segue的identifier改为SideMenu.MenuClass更改为SideMenuSegueModule更改为SideMenuSwift
    • 将内容segue的identifier改为SideMenu.ContentClass更改为SideMenuSegueModule更改为SideMenuSwift
  3. (可选)如果您想使用自定义segue identifier
    • 打开SideMenuControllerAttribute inspector
    • Side Menu Controller部分中,修改Content SegueID/Menu SegueID到所需值并更改相应的segue的identifier。
  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初始化的内容ViewController呢?我们可以使用首选项来为它应用一个默认键!

SideMenuController.preferences.basic.defaultCacheKey = "default"

如果我们不想过早地加载所有内容ViewController怎么办?我们可以使用懒加载缓存

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

要求

  • Xcode 10 或更高版本
  • iOS 9.0 或更高版本

许可证

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