分析版是一个简单的,受到 Snapchat 启发的 ViewController 子类。分析版允许您将自定义 ViewController 添加到内嵌的 ScrollView 中。分析版允许对分析版的展示进行完全控制。
分析版可在 BSD 许可证下使用。有关更多信息,请参阅 LICENSE 文件。
仅需将源文件夹的内容复制到您的项目中。
使用分析版非常简单。
如果您通过 Cocoapods 安装,请确保包含
import Panel
创建一个 ViewController,并将子类设置为 PanelViewController
class MyViewController: PanelViewController {
...
}
要添加您自己的 ViewController,您的容器 ViewController 必须遵循 PanelViewControllerDataSource
协议
class MyViewController: PanelViewController, PanelViewControllerDataSource {
...
}
容器 ViewController 必须在 ViewDidLoad
中将自己设置为 dataSource 代理
override func viewDidLoad() {
super.viewDidLoad()
// Datasource to set our ViewControllers
dataSource = self
}
PanelViewControllerDataSource
有一个必须实现的协议函数:PanelViewDidSetViewControllers()
。该函数期望返回一个 [UIViewController]
类型,其中分析版需要返回三个 ViewController,并按您希望显示的顺序排列
func PanelViewDidSetViewControllers() -> [UIViewController] {
// Add your own custom View Controllers here
viewController1 = UIViewController()
viewController2 = UIViewController()
viewController3 = UIViewController()
let panelArray = [viewController1, viewController2, viewController3]
// Will be displayed in order: [LeftPanel, CenterPanel, RightPanel]
return panelArray
}
如果您想在容器 ViewController 内部动画到特定的分析版,可以使用 animateTo(panel:)
函数
moveTo(panel: .left)
另外,如果您希望某个 ViewController 从一个分析版动画到另一个分析版,请使用 PanelViewControllerDelegate
属性。
在分析版 ViewController 的声明中,添加一个类型为 PanelViewControllerDelegate
的可选 delegate 属性
var delegate: PanelViewControllerDelegate?
当声明容器 ViewController 的 dataSource 时,将表单的 delegate 设置为容器 ViewController
func PanelViewDidSetViewControllers() -> [UIViewController] {
viewController1 = CustomViewController()
// set the ViewController's delegate to the
// container ViewController
viewContoller1.delegate = self
...
}
一旦委托被设置,您可以通过调用委托函数 PanelViewControllerAnimateTo(panel:)
来动画化面板。
delegate?.PanelViewControllerAnimateTo(panel: .left)
如果您希望在滚动时了解容器滚动视图的位置,您可以实现可选的 PanelViewControllerDataSource
函数 PanelViewControllerDidScroll(offSet:)
。这将返回介于 -1.0 和 1.0 之间的偏移量 CGFloat
。
func PanelViewControllerDidScroll(offSet: CGFloat) {
// Offset is a float between -1.0 to 1.0
// depending on the position of ScrollView.
// -1.0 is centered on left panel
// 0.0 is centered on central panel
// 1.0 is centered on right panel
}
如果您有任何问题、请求或增强功能,请随时提交拉取请求、创建问题或直接联系我。
Andrew Walz - [email protected]