KWDrawerController 4.2

KWDrawerController 4.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最新发布2018年9月
SPM支持 SPM

Kawoou 维护。



KWDrawerController

Pod Version Pod Platform Pod License Swift

易于使用的分页视图控制器!

安装

CocoaPods (iOS 8+ 项目)

KWDrawerController 可在 CocoaPods 中使用。将以下内容添加到您的 Podfile 中

# Swift 3
pod 'KWDrawerController', '~> 3.7'

# Swift 4~
pod 'KWDrawerController', '~> 4.2'
pod 'KWDrawerController/RxSwift'        # with RxSwift extension

手动

只需将 DrawerController 文件夹拖放到您的现有项目中。

使用方法

代码

import UIKit

import KWDrawerController

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        let mainViewController   = MainViewController()
        let leftViewController   = LeftViewController()
        let rightViewController  = RightViewController()
        
        let drawerController     = DrawerController()

        drawerController.setViewController(mainViewController, .none)
        drawerController.setViewController(leftViewController, .left)
        drawerController.setViewController(rightViewController, .right)

        /// Customizing

        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.rootViewController = drawerController
        window?.makeKeyAndVisible()

        return true
    }
}

故事板

Storyboard

  1. DrawerController设置为首屏VC的Custom Class。

  2. DrawerEmbedLeftControllerSegue和/或DrawerEmbedRightControllerSegueDrawerController连接到你的左右控制器。

  3. DrawerEmbedMainControllerSegueDrawerController连接到你的主控制器。

  4. 设置DrawerController的检查器及segues的segue标识符。

打开/关闭

/// Open
self.drawerController?.openSide(.left)
self.drawerController?.openSide(.right)

/// Close
self.drawerController?.closeSide()

委托

optional func drawerDidAnimation(
    drawerController: DrawerController,
    side: DrawerSide,
    percentage: Float
)

optional func drawerDidBeganAnimation(
    drawerController: DrawerController,
    side: DrawerSide
)

optional func drawerWillFinishAnimation(
    drawerController: DrawerController,
    side: DrawerSide
)

optional func drawerWillCancelAnimation(
    drawerController: DrawerController,
    side: DrawerSide
)

optional func drawerDidFinishAnimation(
    drawerController: DrawerController,
    side: DrawerSide
)

optional func drawerDidCancelAnimation(
    drawerController: DrawerController,
    side: DrawerSide
)

自定义

转换

DrawerTransition是一个模块,它决定了Drawer的渲染方向。通过继承DrawerTransition来实现。

  • DrawerSlideTransition

DrawerSlideTransition

  • 抽屉缩放过渡
    • 不推荐使用。
  • 抽屉视差过渡

DrawerParallaxTransition

  • 抽屉浮动过渡
    • 当使用 Transition 时,也应使用 DrawerFloatTransition 进行 Overflow Transition

DrawerFloatTransition

  • 抽屉折叠过渡

DrawerFoldTransition

  • 抽屉摆动过渡

DrawerSwingTransition

  • 抽屉缩放过渡

DrawerZoomTransition

Overflow Transition

Overflow Transition 可用于 Transition 超出抽屉展开范围的情况。

  • DrawerSlideTransition
  • 抽屉缩放过渡
    • 当与 DrawerSlideTransitionDrwaerParallaxTransitionDrawerFoldTransitionDrawerSwingTransition 一起使用时,这是自然的。

DrawerScaleTransition

  • 抽屉视差过渡
  • 抽屉浮动过渡
    • 当使用 Overflow Transition 时,也应使用 DrawerFloatTransition
  • 抽屉折叠过渡
    • 不推荐使用。
  • 抽屉摆动过渡
    • 不推荐使用。
  • 抽屉缩放过渡

Animator

Animator 是一个控制抽屉移动速度的模块。它通过继承 DrawerAnimatorDrawerTickAnimator 来实现。

  • DrawerLinearAnimator
  • DrawerCurveEaseAnimator
  • DrawerSpringAnimator
  • DrawerCubicEaseAnimator
  • DrawerQuadEaseAnimator
  • DrawerQuartEaseAnimator
  • DrawerQuintEaseAnimator
  • DrawerCircEaseAnimator
  • DrawerExpoEaseAnimator
  • DrawerSineEaseAnimator
  • DrawerElasticEaseAnimator
  • DrawerBackEaseAnimator
  • DrawerBounceEaseAnimator

Options

public var isTapToClose: Bool
public var isGesture: Bool
public var isAnimation: Bool
public var isOverflowAnimation: Bool
public var isShadow: Bool
public var isFadeScreen: Bool
public var isBlur: Bool
public var isEnable: Bool

变更日志

  • 1.0 第一版。
  • 1.1 修复错误,新增动画。
  • 2.0 重构。
  • 2.1 修复错误,更新动画。
  • 2.2 修复动画和一些错误。
  • 3.0 使用 Swift 3.0 编写。
  • 3.1 修复 DrawerController 上的访问控制问题。
  • 3.2 修复 Transition 上的访问控制问题。
  • 3.3 修复初始化器上的访问控制问题。
  • 3.4 删除调试日志。
  • 3.5 修复了一个当“绝对控制器”时忽略触摸的问题。
  • 3.6 在抽屉开启且布局更改时修复了出现的问题。
  • 3.6.1 修复设备旋转时的布局问题。
  • 3.7 修复属性未更新问题。
  • 4.0 支持 Swift 4。
  • 4.1 实现新标志,允许方向自动切换。
  • 4.1.1 支持RxSwift(如果需要)。
  • 4.1.2
    • 修复子视图控制器自动布局问题。
    • 更改命名。
    • 实现 getViewController 方法。
    • 减少克隆大小。
  • 4.1.3
    • 修复加载时崩溃问题。 (#12)
  • 4.1.4
    • 向代理中添加状态方法。 (#16)
    • 修复访问控制问题。 (#18)
    • 修复DrawerFloatTransition的bug。 (#20)
    • DrawerController不正确地管理子控制器的生命周期。 (#21 #22)
  • 4.1.5
    • 代码和性能改进以及bug修复。 (#24 @rivera-ernesto)
  • 4.1.6
    • 修复过渡bug。
    • 修复手势失效bug。
    • 修复iPad上的右侧抽屉位置问题 (#28 @rivera-ernesto)
  • 4.2
    • 支持swift 4.2. (#31)

⚠️要求

  • iOS 8.0+
  • Swift 3.0+

🔑许可证

KWDrawerController处于MIT许可证下。有关更多信息,请参阅LICENSE文件。