-
Notifications
You must be signed in to change notification settings - Fork 368
/
PagingViewController.swift
111 lines (87 loc) · 4.67 KB
/
PagingViewController.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
//
// PagingViewController.swift
// JXPagingView
//
// Created by jiaxin on 2018/8/10.
// Copyright © 2018年 jiaxin. All rights reserved.
//
import UIKit
import JXSegmentedView
extension JXPagingListContainerView: JXSegmentedViewListContainer {}
class PagingViewController: UIViewController {
var pagingView: JXPagingView!
var userHeaderView: PagingViewTableHeaderView!
var userHeaderContainerView: UIView!
var segmentedViewDataSource: JXSegmentedTitleDataSource!
var segmentedView: JXSegmentedView!
let titles = ["能力", "爱好", "队友"]
var JXTableHeaderViewHeight: Int = 200
var JXheightForHeaderInSection: Int = 50
override func viewDidLoad() {
super.viewDidLoad()
self.title = "个人中心"
self.navigationController?.navigationBar.isTranslucent = false
userHeaderContainerView = UIView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: CGFloat(JXTableHeaderViewHeight)))
userHeaderView = PagingViewTableHeaderView(frame: userHeaderContainerView.bounds)
userHeaderContainerView.addSubview(userHeaderView)
//segmentedViewDataSource一定要通过属性强持有!!!!!!!!!
segmentedViewDataSource = JXSegmentedTitleDataSource()
segmentedViewDataSource.titles = titles
segmentedViewDataSource.titleSelectedColor = UIColor(red: 105/255, green: 144/255, blue: 239/255, alpha: 1)
segmentedViewDataSource.titleNormalColor = UIColor.black
segmentedViewDataSource.isTitleColorGradientEnabled = true
segmentedViewDataSource.isTitleZoomEnabled = true
segmentedView = JXSegmentedView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: CGFloat(JXheightForHeaderInSection)))
segmentedView.backgroundColor = UIColor.white
segmentedView.dataSource = segmentedViewDataSource
segmentedView.isContentScrollViewClickTransitionAnimationEnabled = false
let lineView = JXSegmentedIndicatorLineView()
lineView.indicatorColor = UIColor(red: 105/255, green: 144/255, blue: 239/255, alpha: 1)
lineView.indicatorWidth = 30
segmentedView.indicators = [lineView]
let lineWidth = 1/UIScreen.main.scale
let lineLayer = CALayer()
lineLayer.backgroundColor = UIColor.lightGray.cgColor
lineLayer.frame = CGRect(x: 0, y: segmentedView.bounds.height - lineWidth, width: segmentedView.bounds.width, height: lineWidth)
segmentedView.layer.addSublayer(lineLayer)
pagingView = JXPagingView(delegate: self)
self.view.addSubview(pagingView)
segmentedView.listContainer = pagingView.listContainerView
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
pagingView.frame = self.view.bounds
}
}
extension PagingViewController: JXPagingViewDelegate {
func tableHeaderViewHeight(in pagingView: JXPagingView) -> Int {
return JXTableHeaderViewHeight
}
func tableHeaderView(in pagingView: JXPagingView) -> UIView {
return userHeaderContainerView
}
func heightForPinSectionHeader(in pagingView: JXPagingView) -> Int {
return JXheightForHeaderInSection
}
func viewForPinSectionHeader(in pagingView: JXPagingView) -> UIView {
return segmentedView
}
func numberOfLists(in pagingView: JXPagingView) -> Int {
return titles.count
}
func pagingView(_ pagingView: JXPagingView, initListAtIndex index: Int) -> JXPagingViewListViewDelegate {
let list = PagingListBaseView()
if index == 0 {
list.dataSource = ["橡胶火箭", "橡胶火箭炮", "橡胶机关枪", "橡胶子弹", "橡胶攻城炮", "橡胶象枪", "橡胶象枪乱打", "橡胶灰熊铳", "橡胶雷神象枪", "橡胶猿王枪", "橡胶犀·榴弹炮", "橡胶大蛇炮", "橡胶火箭", "橡胶火箭炮", "橡胶机关枪", "橡胶子弹", "橡胶攻城炮", "橡胶象枪", "橡胶象枪乱打", "橡胶灰熊铳", "橡胶雷神象枪", "橡胶猿王枪", "橡胶犀·榴弹炮", "橡胶大蛇炮"]
}else if index == 1 {
list.dataSource = ["吃烤肉", "吃鸡腿肉", "吃牛肉", "各种肉"]
}else {
list.dataSource = ["【剑士】罗罗诺亚·索隆", "【航海士】娜美", "【狙击手】乌索普", "【厨师】香吉士", "【船医】托尼托尼·乔巴", "【船匠】 弗兰奇", "【音乐家】布鲁克", "【考古学家】妮可·罗宾"]
}
list.beginFirstRefresh()
return list
}
func mainTableViewDidScroll(_ scrollView: UIScrollView) {
userHeaderView?.scrollViewDidScroll(contentOffsetY: scrollView.contentOffset.y)
}
}