CNLiveDownSlideModelLayout.swift 8.44 KB
//
//  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!
    }
    
}