JKDrawer
为 iOS 提供类似地图的抽屉。
特性
- 控制抽屉大小
- 吸附到首选大小
- 多个堆叠抽屉
- 通过手势拖拽和关闭
- 处理嵌套滚动视图
- 微妙动画
- 无需子类化视图控制器
要求
- iOS 10.0+
- Xcode 10.2+
- Swift 4+
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。有关用法和安装说明,请访问他们的网站。要使用 CocoaPods 将 JKDrawer 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod 'JKDrawer', '~> 0.6.0'
Carthage
Carthage 是一个去中心化的依赖管理工具,它可以构建你的依赖关系并提供二进制框架。要使用 Carthage 在你的 Xcode 项目中集成 JKDrawer,请在您的 Cartfile
中指定它。
github "johankool/Drawer" ~> 0.6.0
Swift 包管理器
Swift 包管理器 是一种用于自动化 Swift 代码分发的外部程序,它是 Xcode 11 及更高版本的一部分。要使用 Swift 包管理器在你的 Xcode 项目中集成 JKDrawer,请通过“文件 > Swift 包 > 添加包依赖”将此 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 许可证 授予许可。