KZSegmentedPageView 1.0.5

KZSegmentedPageView 1.0.5

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最新发布2017 年 2 月
SwiftSwift 版本3.0
SPM支持 SPM

Zonily Jame Pesquera 维护。



KZSegmentedView

KZSegmentedPageView 是一个 UIView 子类,结合了 UISegmentedControl 和 UIPageViewController 的功能。

目录

安装

要通过 Cocoapods 安装 KZSegmentedPageView,只需在您的 Podfile 中添加此代码,然后运行 pod install

pod 'KZSegmentedPageView'

如何使用

通过 Cocoapods 安装后,只需在您的 ViewController 类中导入 KZSegmentedPageView

import KZSegmentedPageView

然后,在您的 ViewController 中创建一个类型为 KZSegmentedPageView 的变量。

class ViewController:UIViewController {
    ...
    var segmentedPageView:KZSegmentedPageView!   
    ...
}

最后,将初始化的 KZSegmentedPageView 添加到您的 ViewController 的 viewDidLoad() 函数中,并将其作为子视图添加到 ViewController 的视图中。

    ...
    override func viewDidLoad() {
        super.viewDidLoad()
        segmentedPageView = KZSegmentedPageView()
        segmentedPageView.frame = self.view.bounds
        segmentedPageView.delegate = self
        view.addSubview(segmentedPageView)
    }
    ...

相关代码如下

import UIKit
import KZSegmentedPageView

class ViewController: UIViewController {

    var segmentedPageView:KZSegmentedPageView!
    override func viewDidLoad() {
        super.viewDidLoad()
        segmentedPageView = KZSegmentedPageView()
        segmentedPageView.frame = self.view.bounds
        view.addSubview(segmentedPageView)
    }
}

添加选项卡

要添加选项卡,我们需要使用 KZSegment 结构并在 KZSegmentedPageView 中添加它们。

KZSegment 结构包含两个变量:`title:String` 和 `viewController:UIViewController`。

初始化 KZSegment 如下所示:KZSegment(title: "First VC", viewController: SomeViewController())

要添加选项卡,我们需要创建一个 KZSegment 结构的数组,并在初始化后将其添加到 KZSegmentedPageView 中,如下所示:

    override func viewDidLoad() {
        super.viewDidLoad()
        ...

        // Let's make our ViewControllers first
        let firstViewController = UIViewController()
        firstViewController.view.backgroundColor = UIColor.greenColor()

        let secondViewController = UIViewController()
        secondViewController.view.backgroundColor = UIColor.orangeColor()

        // After making our UIViewController next we'll add them to the `segments` property of our KZSegmentedPageView
        segmentedPageView.segments = [
            KZSegment(title: "First VC", viewController: firstViewController),  
            KZSegment(title: "Second VC", viewController: secondViewController)
        ]

        ...
    }

代理

要收到代理函数,请将 KZSegmentedPageView 的代理设置为 self。

    override func viewDidLoad() {
        super.viewDidLoad()
        ...
        segmentedPageView.delegate = self
        ...
    }

但这将创建一个错误消息,因为我们还没有实现我们的代理方法。为了访问代理方法,我们需要将我们的 ViewController 子类化为 KZSegmentedPageViewDelegate

class ViewController:UIViewController, KZSegmentedPageViewDelegate {
    ...
}

或者

extension ViewController, KZSegmentedPageViewDelegate {
    ...
}

代理函数

有四个代理函数

  • didUpdatePageCount
  • didUpdateSegmentIndex
  • willUpdatePageIndex
  • didSelectSegmentAtIndex

didUpdatePageCount 将在设置 segmentedPageView 的 segments 属性时触发。

    func segmentedPageView(segmentedPageView: KZSegmentedPageView, didUpdatePageCount count: Int) {
        print("Page count:", count)
        // do some code here
    }

didUpdateSegmentIndex 将在您成功从一个段/页面切换到另一个段/页面时触发。

    func segmentedPageView(segmentedPageView: KZSegmentedPageView, didUpdateSegmentIndex index: Int) {

    }

willUpdatePageIndex 将在您当前尝试左右滑动时触发。

    func segmentedPageView(segmentedPageView:KZSegmentedPageView, willUpdatePageIndex index:Int) {
        print("Will Update Page Index To", index, "with title", segmentedPageView.segments[index].title)
    }

didSelectSegmentAtIndex 将在我们点击 KZSegmentedPageViewUISegmentedControl 时触发。

    func segmentedPageView(segmentedPageView:KZSegmentedPageView, didSelectSegmentAtIndex index:Int) {

    }

定制

我们可以使用这些变量来定制 KZSegmentedPageView 的外观。

  • scHeight 这将定制 SegmentedControl 的高度。
  • scTintColor 这将定制 SegmentedControl 的 tintColor。
  • scBackgroundColor 这将定制 SegmentedControl 的背景颜色。
  • viewBackgroundColor 这将定制 backgroundView 的背景颜色(SegmentedControl 后面的视图)。
  • scPaddingTop, scPaddingLeft, scPaddingRight, scPaddingBottom 这将定制 SegmentedControl 的填充。
    override func viewDidLoad() {
        super.viewDidLoad()
        ...
        segmentedPageView.scHeight = 45
        segmentedPageView.scTintColor = UIColor.GreyColor()
        segmentedPageView.scBackgroundColor = UIColor.BlueColor()
        segmentedPageView.scPaddingTop = 8
        segmentedPageView.scPaddingLeft = 8
        segmentedPageView.scPaddingRight = 8
        segmentedPageView.scPaddingBottom = 8
        segmentedPageView.viewBackgroundColor = UIColor.ClearColor()
        ...
    }

快速提示 这些属性应该是 IBInspectable,但我还在解决与 Cocoapods 相关的 IBDesignable 的一些问题。