分析版 1.1.0

分析版 1.1.0

测试已测试
语言语言 SwiftSwift
许可证 BSD
发布上次发布2017年1月
SwiftSwift 版本3.0
SPM支持 SPM

Andrew Walz 维护。



分析版 1.1.0

  • Andrew Walz

分析版



概览

分析版是一个简单的,受到 Snapchat 启发的 ViewController 子类。分析版允许您将自定义 ViewController 添加到内嵌的 ScrollView 中。分析版允许对分析版的展示进行完全控制。

要求

  • iOS 8.0+
  • Swift 3.0+

许可证

分析版可在 BSD 许可证下使用。有关更多信息,请参阅 LICENSE 文件。

安装

手动安装

仅需将源文件夹的内容复制到您的项目中。

用法

使用分析版非常简单。

入门

如果您通过 Cocoapods 安装,请确保包含

import Panel

创建一个 ViewController,并将子类设置为 PanelViewController

class MyViewController: PanelViewController {
    ...

}

添加 ViewController

要添加您自己的 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]