DPSideMenu: Swift 的侧边菜单
注
最棘手的部分是如何存储 interactiveTransition
的引用并将其传递给 interactionControllerForDismissal(:)
方法。
您绝对不应该在 UIViewControllerTransitioningDelegate
类中存储 presentationController
的强引用,否则将会引起保留循环的问题。因此,我们使用 interactiveTransition
的弱引用来指向存储在 presentationController
中的真实 interactiveTransition。
以下是 deinit 的顺序
<DPSideMenu.DPSlideInMenuPresentAnimationController: 0x2805103c0>
<DPSideMenu.DPSlideInMenuDismissAnimationController: 0x2805040c0>
<DPSideMenu.DPSlideInMenuPresentationController: 0x153e00b30>
<DPSideMenu.DPSlideInMenuDismissInteractiveTransition: 0x2837338d0>
<DPSideMenu_Example.MenuViewController: 0x153e00600>
<DPSideMenu_Example.ViewController: 0x153900900>
<DPSideMenu.DPSlideInMenuPresentationManager: 0x280529440>
示例
要运行示例项目,请克隆仓库,并首先从示例目录运行 pod install
。
需求
安装
DPSideMenu 可通过 CocoaPods 获取。要安装它,只需要将以下行添加到您的 Podfile 中
pod 'DPSideMenu'
使用
import DPSideMenu
class ViewController: UIViewController {
lazy var slideInTransitioningDelegate = DPSlideInMenuPresentationManager()
@objc func didTapMenuBtn() {
let menuController = MenuViewController()
slideInTransitioningDelegate.direction = .leftToRight
menuController.transitioningDelegate = slideInTransitioningDelegate
menuController.modalPresentationStyle = .custom
present(menuController, animated: true, completion: nil)
}
}
作者
丹尼尔·马
授权协议
DPSideMenu 在 MIT 许可下可用。更多信息请参阅 LICENSE 文件。