CNHomePageBackgroupView.swift
5.59 KB
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
//
// CNHomePageBackgroupView.swift
// metaCode
//
// Created by daojian on 2023/6/6.
// 认证-添加身份背景视图
import Foundation
import UIKit
import Kingfisher
class CNHomePageBackgroupSubView : UIView
{
///前面的视图
var preSubView: CNHomePageBackgroupSubView?
///后面的视图
var nextSubView: CNHomePageBackgroupSubView?
var name: String = ""
lazy var imageView: UIImageView = {
let imageView: UIImageView = UIImageView(image: UIImage(named: "homePage_backgroup_blue"))
imageView.frame = self.bounds
return imageView
}()
lazy var titleLabel: UILabel = {
let titleLabel = UILabel.init(frame: CGRectMake(25, KNavigationHeight - 20, KSreenWidth - 50, 35))
titleLabel.textColor = .white
titleLabel.font = BoldFont_24
titleLabel.adjustsFontSizeToFitWidth=true
return titleLabel
}()
///自定义mask
lazy var maskLayer: CALayer = {
let maskLayer = CALayer.init()
maskLayer.frame = self.bounds;
maskLayer.backgroundColor = HexColor("#F9F9F9")?.cgColor
self.layer.mask = maskLayer
return maskLayer
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.initUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func initUI(){
self.addSubview(self.imageView)
self.addSubview(self.titleLabel)
}
///设置title
func setTitle(title:String)->Void{
self.titleLabel.text = title
}
///设置图片
func setImage(image:UIImage?)->Void{
if let tempImage = image{
self.imageView.image = tempImage
}else{
}
}
}
class CNHomePageBackgroupView: UIView{
///当前显示的view所处的位置
var currentApearViewIndex: Int = 0
///当前在屏幕显示的view
var currentApearView: CNHomePageBackgroupSubView?
///数据源
lazy var groupSubViewDataArray:Array<CNHomePageBackgroupSubView> = {
let groupSubViewDataArray = Array<CNHomePageBackgroupSubView>()
return groupSubViewDataArray
}()
// MARK: - 初始化
override init(frame: CGRect) {
super.init(frame: frame)
self.initUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
//创建UI
func initUI(){
}
func updateData(idArray:Array<StandListModel>){
let array = self.subviews
for i in (0..<array.count){
let obj:UIView = array[i]
obj.removeFromSuperview()
}
self.groupSubViewDataArray = Array<CNHomePageBackgroupSubView>()
for i in (0..<idArray.count){
let subView: CNHomePageBackgroupSubView = CNHomePageBackgroupSubView.init(frame: self.bounds)
subView.frame = self.bounds
let idModel:StandListModel = idArray[i]
let navTitle:String = idModel.name!
subView.setTitle(title: navTitle)
subView.imageView.kf.indicatorType = .activity
subView.imageView.kf.setImage(with: URL(string: idModel.backgroundImg),placeholder: UIImage(named: "homePage_backgroup_blue"))
//更新双向链表
let lastSubView: CNHomePageBackgroupSubView? = self.groupSubViewDataArray.last
lastSubView?.nextSubView = subView
subView.preSubView = lastSubView
self.groupSubViewDataArray.append(subView)
if i==0 {
self.currentApearView = subView
self.currentApearViewIndex = i
}
}
//倒序添加子view
for i in self.groupSubViewDataArray.enumerated().reversed() {
let subview: CNHomePageBackgroupSubView = i.element
self.addSubview(subview)
}
let subView: CNHomePageBackgroupSubView = CNHomePageBackgroupSubView.init(frame: self.bounds)
subView.frame = self.bounds
}
//MARK: - 公开方法
///获取当前视图左边的子视图
func getLeftView()->CNHomePageBackgroupSubView?{
if(currentApearViewIndex == 0){
return nil
}
return groupSubViewDataArray[currentApearViewIndex - 1]
}
///获取当前视图右边的子视图
func getRightView()->CNHomePageBackgroupSubView?{
if(currentApearViewIndex >= self.groupSubViewDataArray.count - 1){
return nil
}
return groupSubViewDataArray[currentApearViewIndex + 1]
}
/// 替换当前显示的子view
/// - Parameters:
/// - fromIndex: 原来显示的view索引
/// - toIndex: 将要显示的view索引
/// - Returns: 无返回值
func replaceCurerrentApearView(fromIndex:Int ,toIndex:Int)->Void{
//先保存之前显示的view
let tempSubView: CNHomePageBackgroupSubView? = self.currentApearView
//找到下一个要显示的view
if(toIndex < fromIndex){
self.currentApearView = self.currentApearView?.preSubView
}
else{
self.currentApearView = self.currentApearView?.nextSubView
}
//把要显示的view放到最顶层
if let subView = self.currentApearView{
self.bringSubviewToFront(subView)
}
//更新当前显示的view所处的位置
self.currentApearViewIndex = toIndex
//重置之前的currentApearView的Left 和 right
tempSubView?.maskLayer.left = 0;
tempSubView?.maskLayer.right = KSreenWidth;
}
}