PullUpController
创建一个类似于 iOS 地图的带多个粘性点的自定义下拉控制器
特性
- 多个 粘性点
- 支持横幅
- 支持滚动视图
设置
- 将
pod 'PullUpController'
添加到您的 Podfile 或复制PullUpController.swift
到您的项目中 - 确保您将作为下拉控制器的视图控制器继承自
PullUpController
- 使用
addPullUpController(<#T##PullUpController#>, initialStickyPointOffset: <#T##CGFloat#>, animated: <#T##Bool#>)
添加控制器为主控制器的一个子控制器
自定义
通过重写以下属性,您可以自定义控制器行为
pullUpControllerPreferredSize: CGSize
下拉控制器视图的理想尺寸,以屏幕单位为单位。默认值是宽度:
UIScreen.main.bounds.width, height: 400
。
pullUpControllerPreferredLandscapeFrame: CGRect
设备处于横幅模式时,下拉控制器视图的理想尺寸,以屏幕单位为单位。默认值是
(x: 10, y: 10, width: 300, height: UIScreen.main.bounds.height - 20)
。
pullUpControllerMiddleStickyPoints: [CGFloat]
一组y值列表,以屏幕单位表示,使用下拉控制器坐标系。在手势结束时,下拉控制器将滚动到列表中的最近位置。
要获取所有粘性点的完整列表,可以使用
pullUpControllerAllStickyPoints
pullUpControllerBounceOffset: CGFloat
一个CGFloat值,用于确定下拉控制器视图可以超出其大小多少。默认值为0,这意味着视图不能超出其大小。
可以通过使用方法pullUpControllerMoveToVisiblePoint(_ visiblePoint: CGFloat, animated: Bool, completion: (() -> Void)?)
来程序化地更改视图控制器视图的位置。
此方法将移动下拉控制器视图,以便显示提供的可视点。
您可以使用
pullUpControllerAllStickyPoints
中的一个条目来提供有效的可视点。
visiblePoint
:将在下拉控制器坐标系中显示的y值,以屏幕单位表示。animated
:一个true值将以动画方式移动视图。completion
:动画完成后执行的闭包。此块没有返回值且不接受任何参数。您可以为此参数指定nil。
通过重写以下方法,可以自定义控制器视图执行的所有动画。 pullUpControllerAnimate(action: Action, withDuration duration: TimeInterval, animations: @escaping () -> Void, completion: ((Bool) -> Void)?)
您可以考虑重写此方法并使用方法
UIView.animate(withDuration:, delay:, usingSpringWithDamping:, initialSpringVelocity:, options:, animations:, completion:)
来自定义动画。
parameter
:即将执行的操作(.add、.remove或.move)duration
:动画的总持续时间,以秒为单位。如果您指定了负值或0,则没有动画地更改这些更改。-animations
:包含要提交到视图的更改的块对象。completion
:在动画序列结束时执行的块对象。
可以通过重写以下方法来观察PullUpController的视图状态:pullUpControllerWillMove(to point: CGFloat)
在下拉控制器视图移动到粘性点之前,将调用此方法。
pullUpControllerDidMove(to point: CGFloat)
在下拉控制器视图移动到点后,将调用此方法。
pullUpControllerDidDrag(to point: CGFloat)
下拉控制器视图被拖动到点后,将调用此方法。
PullUpController易于拖动,即使您的PullUpController
视图包含一个UIScrollView
,也只需使用以下方法将其附加到控制器本身:<#T##UIScrollView#>.attach(to: <#T##PullUpController#>)
将滚动视图附加到提供的下拉控制器,以移动它并与滚动视图内容一起移动。
pullUpController
:要将它与当前滚动视图内容一起移动的下拉控制器。
示例
在本存储库中,您还可以找到示例。
信息
如果喜欢这个git,可以在以下地方或Twitter上关注我 :) @MarioIannotta
意大利向您致敬!