测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可 | MIT |
发布最新发布 | 2017 年 2 月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
由 Zonily Jame Pesquera 维护。
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 将在设置 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 将在我们点击 KZSegmentedPageView
的 UISegmentedControl
时触发。
func segmentedPageView(segmentedPageView:KZSegmentedPageView, didSelectSegmentAtIndex index:Int) {
}
我们可以使用这些变量来定制 KZSegmentedPageView
的外观。
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
的一些问题。