JKDrawer

一个类似 Maps 的 iOS 抽屉效果。

特性

CocoaPods Compatible Carthage Compatible Swift Package Manager Compatible

要求

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理工具。 有关使用和安装说明,请访问他们的网站。 要使用 CocoaPods 将 JKDrawer 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它

pod 'JKDrawer', '~> 0.6.0'

Carthage

Carthage 是一个去中心化的依赖管理工具,可以构建您的依赖项并为您提供二进制框架。 要使用 Carthage 将 JKDrawer 集成到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "johankool/Drawer" ~> 0.6.0

Swift Package Manager

Swift Package Manager 是一种用于自动化 Swift 代码分发的工具,包含在 Xcode 11+ 中。 要使用 Swift Package Manager 将 JKDrawer 集成到您的 Xcode 项目中,请通过 File > Swift Packages > Add Package Dependency 将此 URL 粘贴到 Xcode 中

https://github.com/johankool/Drawer.git

用法

要能够将视图控制器作为抽屉显示,它必须符合 DrawerPresentable 协议。 此协议要求存在配置变量。 这是一个 DrawerConfiguration 结构体,用于指定某些方面,例如初始偏移量和允许的范围。

class DrawerViewController: UIViewController, DrawerPresentable {

    var configuration = DrawerConfiguration(offset: 300, isDraggable: true, isClosable: false)

}

呈现视图控制器必须符合 DrawerPresenting 协议。 某些方法具有默认实现,其他方法是为了方便您而提供的回调。

class HostViewController: UIViewController, DrawerPresenting {

    func someAction() {
        let drawerViewController = DrawerViewController()
        openDrawer(drawerViewController, animated: true)
    }

    func willOpenDrawer(_ drawer: DrawerPresentable) {

    }

    func didOpenDrawer(_ drawer: DrawerPresentable) {

    }

    func willCloseDrawer(_ drawer: DrawerPresentable) {

    }

    func didCloseDrawer(_ drawer: DrawerPresentable) {

    }

    func didChangeSizeOfDrawer(_ drawer: DrawerPresentable, to size: CGFloat) {

    }

}

导航控制器

由于您无法在 UINavigationController 上方打开抽屉,请考虑使用自定义视图控制器来包装 UINavigationController,或者使用 DrawerNavigationController

许可证

版权所有 (c) 2018-2021 Johan Kool

根据 MIT 许可证 授权