SliderMenuController 0.4.0

SliderMenuController 0.4.0

Cfiddle维护。



SliderMenuController

创建带有多个固定点的可滑动视图控制器

Platform

功能

  • 多个固定
  • 全屏支持
  • 便于滚动的视图

设置

  1. pod 'SliderMenuController'添加到您的Podfile或将SliderMenuController.swift复制到您的项目中
  2. 创建一个继承自SliderMenuController的自定义类。
  3. 使用addSliderMenu(sliderMenuVC: SliderMenuController, initialStickyPointIndex: Int, animated: Bool)将您的自定义控制器作为主控制器的子控制器添加

自定义

您可以通过覆盖以下属性来自定义控制器行为

preferredPortraitSize: CGSize

横屏情况下,slider menu controller视图期望的大小,以屏幕单位计。主要用于设置控制器标准宽度。默认值是宽度:UIScreen.main.bounds.width, height: 400

preferredLandscapetSize: CGSize

滑动菜单控制器视图期望的大小,在横向布局中的屏幕单位。主要用于设置控制器的标准宽度。默认值是宽度:UIScreen.main.bounds.width, 高度: 400

stickyPoints: [CGFloat]

包含屏幕单位y值的列表,以滑动菜单控制器坐标系中的值表示。在手势结束时,滑动菜单控制器将滚动到列表中最接近的点。

根据当前设备的方向,此属性从portraitStickyPoints或landscapeStickyPoints中获取。

portraitStickyPoints: [CGFloat]

包含纵向布局屏幕单位y值的列表,以滑动菜单坐标系中的值表示。在手势结束时,滑动菜单控制器将滚动到列表中最接近的点。

landscapeStickyPoints: [CGFloat]

包含横向布局屏幕单位y值的列表,以滑动菜单坐标系中的值表示。在手势结束时,滑动菜单控制器将滚动到列表中最接近的点。

bounceOffset: CGFloat

一个CGFloat值,用于确定滑动菜单控制器视图可以超出其大小的程度。默认值是0,这意味着视图不能超出其大小。

可以通过使用方法moveSliderMenuToPoint(_ stickyPoint: CGFloat, animated: Bool, completion: (() -> Void)?)程序化地更改视图控制器的视图位置。

此方法将通过移动滑动菜单控制器视图以显示提供的粘点。

您可以使用stickyPoints中的项目来提供有效的粘点。

  • stickyPoint:要使其可见的y值,以屏幕单位表示,以滑动菜单控制器坐标系中的值。
  • animated:如果为true,则通过动画移动视图。
  • completion:动画完成后执行的闭包。此闭包没有返回值,也不接受任何参数。您可以为此参数指定nil。

通过重写以下方法,可以自定义由控制器视图执行的所有动画。 animateSliderMenu(action: Action, withDuration duration: TimeInterval, animations: @escaping () -> Void, completion: ((Bool) -> Void)?)

您可以考虑重写此方法并使用方法UIView.animate(withDuration:, delay:, usingSpringWithDamping:, initialSpringVelocity:, options:, animations:, completion:)来自定义动画。

  • parameter:即将执行的动作(.addSliderMenu, .removeSliderMenu或.moveSliderMenu)
  • duration:动画的总持续时间,以秒为单位。如果您指定一个负值或0,则更改将在没有动画的情况下执行。-animations:包含要提交到视图的更改的块对象。completion:在动画序列结束时执行的块对象。

可以通过重写以下方法来观察SliderMenuController的视图状态: sliderWillMove(to point: CGFloat)

此方法在滑动菜单控制器视图移动到粘点之前调用。

sliderDidMove(to point: CGFloat)

此方法在滑动菜单控制器视图移动到点之后调用。

sliderDidDrag(to point: CGFloat)

此方法在移动滑动菜单控制器视图到点后调用。

演示

在此存储库中,您还可以找到演示。

来自硅谷森林,波特兰的问候!