AKSideMenu 1.4.6

AKSideMenu 1.4.6

测试已测试
Lang语言 SwiftSwift
许可证 MIT
released最后发布2021 年 6 月
SPM支持 SPM

Diogo Autilio 维护。



AKSideMenu

Build Status Cocoapods Pod License Carthage compatible

AKSideMenu 是一个带有视差效果的平行侧菜单库。

AKSideMenu Screenshot

AKSideMenu Screenshot

示例项目

查看包含的示例,以了解如何轻松地将 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 示例

  1. 创建 AKSideMenu 的子类。在这个例子中我们称它为 RootViewController
  2. 在 Storyboard 中指定根视图的所有者为 RootViewController
  3. 在 Storyboard 中添加更多视图控制器,并给它们分配标识符 "leftMenuViewController"、"rightMenuViewController" 和 "contentViewController"。注意,在新的 XCode 中,标识符称为 "Storyboard ID",可以在身份检查器中找到。
  4. 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

https://github.com/romaonthego/RESideMenu