CNLiveDownSlideModelLayout.swift
8.44 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
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
//
// CNLiveDownSlideModelLayout.swift
// metaCode
//
// Created by zx on 2023/10/23.
//
import Foundation
///一大2-6小的小图高度
let OneBigTwoSmallImgH: CGFloat = OneBigTwoSmallImgW*92.5/165
///一大2-6小的小图宽度
let OneBigTwoSmallImgW: CGFloat = (KSreenWidth-DownSlideRecommendLeftGap*3)*0.5
class CNLiveDownSlideModelLayout:NSObject{
///cell高度
var cellH:CGFloat = 0.0
//slideModel
var _slideModel : CNLiveDownSlideModel?
var slideModel : CNLiveDownSlideModel? {
get{
_slideModel
}
set{
_slideModel = newValue
}
}
init(model:CNLiveDownSlideModel){
super.init()
self.slideModel = model
//总块数
let contentsNum = model.contents.count
//model行数
let row = model.rowNum
if(_slideModel?.type == SlideModelTypeRecommend4){//推荐活动,推荐课程
//总显示块数/循环数
var totalNum = (contentsNum >= row*2) ? row*2 : contentsNum
if row == 0{//row为0 , contents全部显示
totalNum = contentsNum
}
_slideModel?.cellH = Float(ceil(CGFloat(totalNum)*0.5)*(DownSlideRecommendWH + DownSlideRecommendLeftGap))
}else if(_slideModel?.type == SlideModelTypeTodayRecommend74){//今日推荐
//总显示块数/循环数
var totalNum = (contentsNum >= row) ? row : contentsNum
if row == 0{//row为0 , contents全部显示
totalNum = contentsNum
}
_slideModel?.cellH = Float(CGFloat(totalNum)*(DownSlideTodayRecommendH + DownSlideRecommendLeftGap))
}else if(_slideModel?.type == SlideModelTypeBanner1){//Banner大图
_slideModel?.cellH = Float(DownSlideBannerH)+Float(DownSlideRecommendLeftGap)
}else if(_slideModel?.type == SlideModelTypeAllCourse12){//全部课程
//总显示块数/循环数
var totalNum = (contentsNum >= row) ? row : contentsNum
if row == 0{//row为0 , contents全部显示
totalNum = contentsNum
}
_slideModel?.cellH = Float(DownSlideAllCourseTitleH + DownSlideAllCourseRowH * CGFloat(totalNum)+DownSlideRecommendLeftGap)
}else if(_slideModel?.type == SlideModelTypeOneCourse75){//单节课程
_slideModel?.cellH = Float(DownSlideSingleCourseImgH + DownSlideSingleCourseMoreH+DownSlideRecommendLeftGap)
}else if(_slideModel?.type == SlideModelTypeTwoDuanJu5){//忽必烈版一排3个 旧版竖版短剧 一排2个
//总显示块数/循环数
var totalNum = (contentsNum >= row*3) ? row*3 : contentsNum
if row == 0{//row为0 , contents全部显示
totalNum = contentsNum
}
let DownSlideTwoDuanJuW: CGFloat = (KSreenWidth-60)/3.0
let DownSlideTwoDuanJuH: CGFloat = 140*DownSlideTwoDuanJuW/105.0
var titleH:Float = 25.0+10.0
if _slideModel?.showType == "1"{
//不展示标题 和按钮
titleH = 0
}else{
//展示标题
if (_slideModel?.moreUrl.count ?? 0 > 0) && (_slideModel?.moreType.count ?? 0 > 0){
//展示更多按钮
}else{
//不展示更多按钮
titleH = 0
}
}
let titleSubH:Float = 45.0
let bottomGap:Float = 10.0
let rowH:Float = Float(DownSlideTwoDuanJuH)+titleSubH
let hang = Int(ceil(CGFloat(totalNum)/3.0))
_slideModel?.cellH = Float(Float(hang)*rowH+Float(Double(titleH))+bottomGap)
// //总显示块数/循环数
// var totalNum = (contentsNum >= row*2) ? row*2 : contentsNum
// if row == 0{//row为0 , contents全部显示
// totalNum = contentsNum
// }
// _slideModel?.cellH = Float(ceil(CGFloat(totalNum)*0.5)*(DownSlideTwoDuanJuH))
}else if(_slideModel?.type == SlideModelTypeRealHotList7){//7实时热榜
_slideModel?.cellH = Float(DownSlideRealHotListH)+Float(DownSlideRecommendLeftGap)
}else if (_slideModel?.type == SlideModelTypeLanmu22){//22 首页栏目 电影 电视剧 纪录片 音乐
_slideModel?.cellH = 44.0+38.0//+15.0
}else if (_slideModel?.type == SlideModelTypeFollow77){// 正在追
_slideModel?.cellH = 50.0+15.0//80.0
}else if (_slideModel?.type == SlideModelTypeTVOneBigTwoSmall2){//2 一大图2-6小图
let DownSlideTwoDuanJuW: CGFloat = (KSreenWidth-30)
let DownSlideTwoDuanJuH: CGFloat = DownSlideTwoDuanJuW*190/345.0
//总显示块数/循环数
let a = (Double(contentsNum)-1.0)*0.5
let num = Int(1+ceil(a))
var totalNum = (contentsNum >= row) ? row : num
if row == 0{//row为0 , contents全部显示
totalNum = num
}
var titleH:Float = 25.0+10.0
if _slideModel?.showType == "1"{
//不展示标题 和按钮
titleH = 0
}else{
//展示标题
if (_slideModel?.moreUrl.count ?? 0 > 0) && (_slideModel?.moreType.count ?? 0 > 0){
//展示更多按钮
}else{
//不展示更多按钮
titleH = 0
}
}
let bigTitleSubTitH:Float = 66.0
let padding:Float = 15.0
let bigH:Float = Float(DownSlideTwoDuanJuH)+bigTitleSubTitH+padding
let smallH:Float = Float(OneBigTwoSmallImgH)+bigTitleSubTitH+padding
let totalF:Float = Float(totalNum-1)
_slideModel?.cellH = Float(titleH+bigH+smallH*totalF)
}else if (_slideModel?.type == SlideModelTypeAD31){//31 横幅广告
_slideModel?.cellH = Float(CNLiveHomeADH+15.0)//Float(90.0+15.0)
}else if (_slideModel?.type == SlideModelTypeShop29){//官方周边
//总显示块数/循环数
var totalNum = (contentsNum >= row*2) ? row*2 : contentsNum
if row == 0{//row为0 , contents全部显示
totalNum = contentsNum
}
var titleH:Float = 25.0+10.0
if _slideModel?.showType == "1"{
//不展示标题 和按钮
titleH = 0
}else{
//展示标题
if (_slideModel?.moreUrl.count ?? 0 > 0) && (_slideModel?.moreType.count ?? 0 > 0){
//展示更多按钮
}else{
//不展示更多按钮
titleH = 0
}
}
let imgWH:Float = Float((KSreenWidth-15*3)*0.5)
let bottomH:Float = 55.0
let rowH:Float = imgWH+bottomH+15.0
let hang = Int(ceil(CGFloat(totalNum)*0.5))
_slideModel?.cellH = Float(Float(hang)*rowH+titleH)+40.0
print("shop:\(_slideModel?.cellH ?? 0)")
}else if(_slideModel?.type == SlideModelTypeOngHangThree3){//忽必烈版一排3个
//总显示块数/循环数
var totalNum = (contentsNum >= row*3) ? row*3 : contentsNum
if row == 0{//row为0 , contents全部显示
totalNum = contentsNum
}
var titleH:Float = 25.0+10.0
if _slideModel?.showType == "1"{
//不展示标题 和按钮
titleH = 0
}else{
//展示标题
if (_slideModel?.moreUrl.count ?? 0 > 0) && (_slideModel?.moreType.count ?? 0 > 0){
//展示更多按钮
}else{
//不展示更多按钮
titleH = 0
}
}
let DownSlideTwoDuanJuW:Float = Float((KSreenWidth-60)/3.0)
let DownSlideTwoDuanJuH:Float = 140*DownSlideTwoDuanJuW/105.0
let hang = Int(ceil(CGFloat(totalNum)/3.0))
let rowH = DownSlideTwoDuanJuH+55
_slideModel?.cellH = Float(Float(hang)*rowH+titleH)
} else{
_slideModel?.cellH = 0
}
}
func getCellHModel()->CNLiveDownSlideModel{
return _slideModel!
}
}