AKSideMenu
AKSideMenu 是一个带有视差效果的平行侧菜单库。
示例项目
查看包含的示例,以了解如何轻松地将 AKSideMenu
集成到您的项目中。
从 AKSideMenuExamples
目录构建示例。
安装
CocoaPods.
要安装,请将以下行添加到您的 Podfile 中
pod 'AKSideMenu'
Carthage.
安装时,请在您的 Cartfile 中添加以下行
github "dogo/AKSideMenu" "1.4.0"
易于使用
简单实现
在您的 AppDelegate 中添加以下代码。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
self.window = UIWindow.init(frame: UIScreen.main.bounds)
// Create content and menu controllers
let navigationController: UINavigationController = UINavigationController.init(rootViewController: FirstViewController.init())
let leftMenuViewController: LeftMenuViewController = LeftMenuViewController.init()
let rightMenuViewController: RightMenuViewController = RightMenuViewController.init()
// Create side menu controller
let sideMenuViewController: AKSideMenu = AKSideMenu(contentViewController: navigationController, leftMenuViewController: leftMenuViewController, rightMenuViewController: rightMenuViewController)
// Make it a root controller
self.window!.rootViewController = sideMenuViewController
self.window!.backgroundColor = UIColor.white
self.window?.makeKeyAndVisible()
return true
}
Storyboard 示例
- 创建
AKSideMenu
的子类。在这个例子中我们称它为RootViewController
。 - 在 Storyboard 中指定根视图的所有者为
RootViewController
。 - 在 Storyboard 中添加更多视图控制器,并给它们分配标识符 "leftMenuViewController"、"rightMenuViewController" 和 "contentViewController"。注意,在新的 XCode 中,标识符称为 "Storyboard ID",可以在身份检查器中找到。
- 将
awakeFromNib
方法添加到RootViewController.swift
,代码如下
override public func awakeFromNib() {
self.contentViewController = self.storyboard!.instantiateViewControllerWithIdentifier("contentViewController")
self.leftMenuViewController = self.storyboard!.instantiateViewControllerWithIdentifier("leftMenuViewController")
self.rightMenuViewController = self.storyboard!.instantiateViewControllerWithIdentifier("rightMenuViewController")
}
以下是一个委托实现的示例。请根据您的上下文修改代码。
...
sideMenuViewController.delegate = self
...
// MARK: - <AKSideMenuDelegate>
open func sideMenu(_ sideMenu: AKSideMenu, shouldRecognizeGesture recognizer: UIGestureRecognizer, simultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
// return true to allow both gesture recognizers to recognize simultaneously. Returns false by default
return false
}
open func sideMenu(_ sideMenu: AKSideMenu, gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOf otherGestureRecognizer: UIGestureRecognizer) -> Bool {
// return true or false based on your failure requirements. Returns false by default
return false
}
open func sideMenu(_ sideMenu: AKSideMenu, gestureRecognizer: UIGestureRecognizer, shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
// return true or false based on your failure requirements. Returns false by default
return false
}
open func sideMenu(_ sideMenu: AKSideMenu, willShowMenuViewController menuViewController: UIViewController) {
print("willShowMenuViewController")
}
open func sideMenu(_ sideMenu: AKSideMenu, didShowMenuViewController menuViewController: UIViewController) {
print("didShowMenuViewController")
}
open func sideMenu(_ sideMenu: AKSideMenu, willHideMenuViewController menuViewController: UIViewController) {
print("willHideMenuViewController")
}
open func sideMenu(_ sideMenu: AKSideMenu, didHideMenuViewController menuViewController: UIViewController) {
print("didHideMenuViewController")
}
显示菜单视图控制器
self.sideMenuViewController!.presentLeftMenuViewController()
或
self.sideMenuViewController!.presentRightMenuViewController()
切换内容视图控制器
self.sideMenuViewController!.setContentViewController(viewController, animated: true)
self.sideMenuViewController!.hideMenuViewController()
属性
public var animationDuration: TimeInterval
动画持续时间。默认值为 0.35。
public var backgroundImage: UIImage
内容背景图像。默认值为白色。
public var panGestureEnabled: Bool
启用 panGesture 检测。默认值为 True。
public var panFromEdge: Bool
启用从边缘启用 panGesture 检测。默认值为 True。
public var panMinimumOpenThreshold: Float
打开侧菜单的最小 panGesture 数量。默认值为 60.0。
public var interactivePopGestureRecognizerEnabled: Bool
启用交互式弹出手势识别器。默认值为 True。
public var scaleContentView: Bool
TODO。默认值为 True。
public var scaleBackgroundImageView: Bool
TODO。默认值为 False。
public var scaleMenuView: Bool
TODO。默认值为 True。
public let contentViewShadowEnabled: Bool
TODO。默认值为 False。
public var contentViewShadowOffset: CGSize
TODO。默认值为 CGSizeZero。
public var contentViewShadowOpacity: Float
TODO。默认值为 0.4。
public var contentViewShadowRadius: CGFloat
TODO。默认值为 8.0。
public var contentViewScaleValue: CGFloat
TODO。默认值为 0.7。
public var contentViewInLandscapeOffsetCenterX: CGFloat
TODO。默认值为 30.0。
public var contentViewInPortraitOffsetCenterX: CGFloat
TODO。默认值为 30.0。
public var parallaxMenuMinimumRelativeValue: CGFloat
TODO。默认值为 -15。
public var parallaxMenuMaximumRelativeValue: CGFloat
TODO。默认值为 15。
public var parallaxContentMinimumRelativeValue: CGFloat
TODO。默认值为 -25。
public var parallaxContentMaximumRelativeValue: CGFloat
TODO。默认值为 25。
public var menuViewControllerTransformation: CGAffineTransform
TODO。默认值为 nil。
public var parallaxEnabled: Bool
TODO。默认值为 True。
public var bouncesHorizontally: Bool
TODO。默认值为 True。
public var menuPreferredStatusBarStyle: UIStatusBarStyle
当菜单可见时,首选的 UIStatusBarStyle。默认值为 UIStatusBarStyle.default。
public var menuPrefersStatusBarHidden: Bool
当菜单可见时,设置StatusBar是否隐藏。默认值为 False。
public var backgroundTransformScale: CGFloat
设置应用于背景图像视图的变换缩放量。默认值为 1.7。
public var panFromEdgeZoneWidth: CGFloat
设置应识别的 panGesture 区域的宽度。默认值为 20.0。
public var panGestureLeftEnabled: Bool
启用或禁用左 panGesture 识别。默认值为 True。
public var panGestureRightEnabled: Bool
启用或禁用右 panGesture 识别。默认值为 True。
合作
我努力创建一个简洁的API使用方式,让它足够灵活以适应多种变体,但我相信还有改进和添加更多功能的方法,所以请随时提出想法、问题和/或拉取请求进行合作。
ARC
AKSideMenu需要ARC。
许可
AKSideMenu在MIT许可下提供。
向原始团队表示感谢
Roman Efimov @romaonthego