CNMainView.swift 11.1 KB
//
//  CNMainView.swift
//  metaCode
//
//  Created by daojian on 2023/5/31.
//

import Foundation
import UIKit
///旋转动画时间
let KTransformAnimationTime:CGFloat  = 0.75;

///正面View
class CNFrontMainView : UIView{
    ///点击反转事件
    var tapTransformAciton:closureBlock?

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.initUI()
//        let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapAction))
//        self.addGestureRecognizer(tap)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    ///视图总容器
    lazy var frontContentView : UIView = {
        
        let frontContentView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.width, height: self.height ))
        frontContentView.backgroundColor = UIColor.white
        frontContentView.clipsToBounds = true
        frontContentView.layer.cornerRadius = 20
        frontContentView.addSubview(self.contentView)
        return frontContentView
    }()
    
    /// 已认证-身份卡片
    lazy var iDCardView:CNIDCardView = {

        let iDCardView:CNIDCardView = CNIDCardView(frame: CGRect(x: 20, y: 25, width: self.width-40, height: (self.width-40) * 0.64))
        return iDCardView
    }()
    
    //未认证下 textview
    lazy var textView: UITextView = {
        let textView = UITextView.init()
        
        textView.textColor = HexColor("#333333")
        textView.font = UIFont.init(name: "PingFangSC-Medium", size: 13)
        textView.textAlignment  = .left
        textView.contentMode = .scaleAspectFill
        textView.sizeToFit()
        textView.backgroundColor = HexColor("#004FE0", alpha: 0.1)
        textView.clipsToBounds = true
        textView.layer.cornerRadius = 14
        textView.isUserInteractionEnabled = false
        return textView
    }()
    
    ///点击添加身份 按钮
    lazy var addStandBtn: UIButton = {
        let addStandBtn = UIButton(type: .custom)
        addStandBtn.clipsToBounds = true
        addStandBtn.layer.cornerRadius = 19.5
        addStandBtn.backgroundColor = HexColor("#004FE0")
        addStandBtn.setTitle("点击添加身份", for: .normal)
        addStandBtn.setTitleColor(.white, for: .normal)
        addStandBtn.titleLabel?.font = UIFont.init(name: "PingFangSC-Medium", size: 14)
        addStandBtn.addTarget(self, action: #selector(addStandBtnAction), for: .touchUpInside)
        return addStandBtn
    }()
    
    ///前置视图容器
    lazy var contentView : UIView = {

        let contentView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.width, height: self.height ))
        contentView.backgroundColor = UIColor.white
        contentView.clipsToBounds = true
        contentView.layer.cornerRadius = 20
        contentView.addSubview(self.addStandBtn)
        addStandBtn.snp.makeConstraints { make in
            make.centerX.equalToSuperview()
            make.bottom.equalToSuperview().offset(-30)
            make.width.equalTo(150)
            make.height.equalTo(39)
        }
                
        contentView.addSubview(self.textView)
        textView.snp.makeConstraints { make in
            make.top.equalToSuperview().offset(40)
            make.left.equalToSuperview().offset(30)
            make.right.equalToSuperview().offset(-30)
            make.bottom.equalTo(addStandBtn.snp.top).offset(-30)
        }
        
        return contentView
        
    }()
    
    //IDmodel
    var _idModel : StandListModel?
    var idModel : StandListModel? {
        get{
            _idModel
        }
        set{
            _idModel = newValue
            let auth = newValue!.auth
            if(auth == true){
            //已认证身份
                //显示证件View
                print("已认证身份")
                iDCardView.isHidden = false
                iDCardView.idModel = newValue!
                contentView.isHidden = true
                
            }else
            {//未认证身份
                iDCardView.isHidden = true
                //显示textview 添加身份
                contentView.isHidden = false
                textView.text = newValue!.description
                addStandBtn.backgroundColor = HexColor(newValue!.backgroundColor)
                textView.backgroundColor = HexColor(newValue!.backgroundColor, alpha: 0.1)
            }
        } 
    }
    
    func initUI()
    {
        self.addSubview(self.frontContentView)
        self.frontContentView.addSubview(self.contentView)
        self.frontContentView.addSubview(self.iDCardView)
        
        self.makeConstraints()
    }
    func makeConstraints(){
        self.iDCardView.snp.makeConstraints { make in
            make.centerX.equalToSuperview()
            make.top.equalToSuperview().offset(25)
            make.width.equalTo(self.width-40)
            make.height.equalTo((self.width-40) * 0.64)
        }
    }
    
    // MARK: -按钮点击事件
    @objc func tapAction(){
        tapTransformAciton!()
    }

    @objc func addStandBtnAction() {
        //跳转到添加身份页面
//        currentViewController()?.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: _idModel!), animated: false)
        DispatchQueue.main.asyncAfter(deadline: .now()+0.25){
            currentViewController()?.navigationController?.pushViewController(CNLiveMineInputViewController.init(listModel: self._idModel!), animated: true)
        }

    }
}

///反面View
class CNBackMainView : UIView{
    ///点击反转事件
    var tapTransformAciton:closureBlock?

    
    // MARK: - 懒加载
    lazy var imageView:UIImageView = {

        let tempImageView:UIImageView = UIImageView(frame: CGRect(x: 10, y: 10, width: self.width-20, height: self.height - 20))
        tempImageView.image = UIImage(named: "homePage_backViewImage")
        
        return tempImageView
    }()
    
    lazy var contentView : UIView = {

        let contentView = UIView.init(frame: CGRect(x: 0, y: 0, width: self.width, height: self.height))
        contentView.backgroundColor = UIColor.white
        contentView.clipsToBounds = true
        contentView.layer.cornerRadius = 20
        
        return contentView
        
    }()
    
    lazy var bottomBackBtn : UIButton = {
        let bottomBackBtn = UIButton(type: .custom)
        bottomBackBtn.frame = CGRectMake(0, 0, 90, 40)
        bottomBackBtn.centerX = self.contentView.width/2
        bottomBackBtn.bottom = self.contentView.height - 15
        bottomBackBtn.setTitle("回到首页", for: .normal)
        bottomBackBtn.setTitleColor(UIColor("#333333"), for: .normal)
        bottomBackBtn.setImage(UIImage(named: "homePage_backBtn_icon"), for: .normal)
        bottomBackBtn.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 8)
        bottomBackBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15)

        bottomBackBtn.addTarget(self, action: #selector(tapAction), for: .touchUpInside)
        return bottomBackBtn
    }()
    
    
    //MARK: - 初始化
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.initUI()
        let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapAction))
        self.addGestureRecognizer(tap)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func initUI()
    {
//        self.addSubview(self.imageView)
        self.addSubview(self.contentView)
        self.contentView.addSubview(self.bottomBackBtn)
    }
    //MARK: - 事件
    @objc func tapAction(){
        tapTransformAciton!()
    }
}



///中间主VIew
class CNMainView : UIView{
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        self.initUI()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    //IDmodel
    var _idModel : StandListModel?
    var idModel : StandListModel? {
        get{
            _idModel
        }
        set{
            self.frontView.idModel = newValue!
            _idModel = newValue
        }
        
    }
    
    ///正面View
    lazy var frontView:CNFrontMainView = {

        let frontView = CNFrontMainView.init(frame: self.bounds)
        frontView.tapTransformAciton = { [weak self] in
            self?.transformToBacnkView();
        }
        return frontView
    }()
    
    ///背面View
    lazy var backView:CNBackMainView = {
        let backView = CNBackMainView.init(frame: self.bounds)
        backView.tapTransformAciton = { [weak self] in
            self?.transformToFrontView()
        }
        return backView
    }()
    
    
    func initUI()
    {
        self.addSubview(self.frontView)
        self.addSubview(self.backView)

        
        self.backView.isHidden = true;
        
//        self.layer.cornerRadius = 20;
//        self.layer.shadowOpacity = 1;
//        self.layer.shadowColor = UIColor("#eeeeee")?.cgColor
//        self.layer.shadowOffset = CGSize(width: 10, height: 10)
//        self.layer.shadowRadius = 10;

    }
    
    // MARK: - <##><##>设置前置视图容器
    func isHiddenMainFrontContentView(isHidden:Bool){
        self.frontView.contentView.isHidden = isHidden
    }
    
    // MARK: - 事件
    
    ///旋转到反面
    func transformToBacnkView()
    {
        //旋转动画
        UIView.animate(withDuration: KTransformAnimationTime) {
            self.layer.transform = CATransform3DMakeRotation(.pi, 0, 1, 0);
        }
        
        //让背面也旋转180度
        self.backView.layer.transform = CATransform3DMakeRotation(.pi, 0, 1, 0);

        //在中间时刻进行正反面view的隐藏显示处理
        let deadline = DispatchTime.now() - DispatchTimeInterval.milliseconds(50) + DispatchTimeInterval.milliseconds(Int (KTransformAnimationTime*1000/2))
                
        DispatchQueue.main.asyncAfter(deadline: deadline, execute: DispatchWorkItem(block: {
            UIView.animate(withDuration: 0.05) {
                self.frontView.isHidden = true;
                self.backView.isHidden = false;
            }
        }))
        
        
    }
    ///旋转到正面
    func transformToFrontView()
    {
        //旋转动画
        UIView.animate(withDuration: KTransformAnimationTime) {
            self.layer.transform = CATransform3DMakeRotation(0, 0, 1, 0);

        } completion: { _ in
            //背面恢复旋转
            self.backView.layer.transform = CATransform3DMakeRotation(0, 0, 1, 0);
        }
        
    

        //在中间时刻进行正反面view的隐藏显示处理
        let deadline = DispatchTime.now() - DispatchTimeInterval.milliseconds(50) + DispatchTimeInterval.milliseconds(Int (KTransformAnimationTime*1000/2))
        
        DispatchQueue.main.asyncAfter(deadline: deadline, execute: DispatchWorkItem(block: {
            UIView.animate(withDuration: 0.05) {
                self.frontView.isHidden = false;
                self.backView.isHidden = true;
            }
        }))
        
    }
    
    ///缩放
    open func scaledView(scale:CGFloat)
    {
//        self.frontView.imageView.transform = CGAffineTransformMakeScale(scale, scale);
    }
}