CNHomePageBackgroupView.swift 5.59 KB
//
//  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;
        
    }
    
}