一个类似 Maps 的 iOS 抽屉效果。
特性
CocoaPods 是 Cocoa 项目的依赖管理工具。 有关使用和安装说明,请访问他们的网站。 要使用 CocoaPods 将 JKDrawer 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
pod 'JKDrawer', '~> 0.6.0'
Carthage 是一个去中心化的依赖管理工具,可以构建您的依赖项并为您提供二进制框架。 要使用 Carthage 将 JKDrawer 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "johankool/Drawer" ~> 0.6.0
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 许可证 授权