CNLiveMineInfoViewController.swift 6.61 KB
//
//  CNLiveMineInfoViewController.swift
//  metaCode
//
//  Created by open on 2023/6/9.
//

import Foundation
import HXPHPicker
import Kingfisher

typealias ClickInfoResultBlock = (_ image: UIImage) -> Void
class CNLiveMineInfoViewController: CNLiveBaseViewController, PhotoPickerControllerDelegate {
    
    lazy var imageView: UIImageView = {
        let imageView = UIImageView.init()
        imageView.backgroundColor = .clear
        imageView.contentMode = .scaleAspectFill
        imageView.clipsToBounds = true
        imageView.image = UIImage(named: "mine_header_icon_defult_ava")
        imageView.kf.indicatorType = .activity
        imageView.kf.setImage(with: URL(string: UserInfoManager.shared.userInfo.bigFaceUrl), placeholder: UIImage(named: "mine_header_icon_defult_ava"))
        return imageView
    }()
    
    lazy var changeBtn: UIButton = {
        let changeBtn = UIButton.init(type: .custom)
        changeBtn.setTitle("更换头像", for: .normal)
        changeBtn.setTitleColor(.white, for: .normal)
        changeBtn.titleLabel?.font = BoldFont_19_Fit
        changeBtn.layer.cornerRadius = 20
        changeBtn.layer.masksToBounds = true
        changeBtn.addTarget(self, action: #selector(changeAvatarAction), for: .touchUpInside)
        return changeBtn
    }()
    
    lazy var sendBtn: UIButton = {
        let sendBtn = UIButton.init(type: .custom)
        sendBtn.setTitle("确认", for: .normal)
        sendBtn.setTitleColor(.white, for: .normal)
        sendBtn.titleLabel?.font = BoldFont_19_Fit
        sendBtn.layer.cornerRadius = 20
        sendBtn.layer.masksToBounds = true
        sendBtn.isHidden = true
        sendBtn.addTarget(self, action: #selector(changeSendAction), for: .touchUpInside)
        return sendBtn
    }()
    
    lazy var cancelBtn: UIButton = {
        let cancelBtn = UIButton.init(type: .custom)
        cancelBtn.setTitle("取消", for: .normal)
        cancelBtn.setTitleColor(.black, for: .normal)
        cancelBtn.backgroundColor = .white
        cancelBtn.layer.cornerRadius = 20
        cancelBtn.layer.masksToBounds = true
        cancelBtn.isHidden = true
        cancelBtn.addTarget(self, action: #selector(changeCancelAction), for: .touchUpInside)
        return cancelBtn
    }()
    
    var _select_image: UIImage!
    var reslut: ClickInfoResultBlock
    init(result: @escaping ClickInfoResultBlock) {
        self.reslut = result
       super.init(nibName:nil, bundle:nil)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .black
        setNeedsStatusBarAppearanceUpdate()
        navigationBarHidden = false
        topNavView.backgroundColor = .clear
        //先设置一个默认返回按钮
        let leftBtn_array : Array<UIButton> = [UIButton.backItem(imageName: "mine_header_icon_white_back", target: self, action: #selector(changeCancelAction))]
        leftNavBtns = leftBtn_array
        
        
        view.addSubview(imageView)
        imageView.snp.makeConstraints { make in
            make.center.equalToSuperview()
            make.left.right.equalToSuperview()
            make.height.equalTo(KSreenWidth)
        }
        
        view.addSubview(changeBtn)
        changeBtn.snp.makeConstraints { make in
            make.centerX.equalToSuperview()
            make.bottom.equalToSuperview().offset(-get_system_tabbar_ui_offsetHeight()-20)
            make.width.equalTo(200)
            make.height.equalTo(40)
        }
        changeBtn.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: 1),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: 1)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5))
        
        view.addSubview(cancelBtn)
        cancelBtn.snp.makeConstraints { make in
            make.bottom.equalToSuperview().offset(-get_system_tabbar_ui_offsetHeight()-20)
            make.left.equalToSuperview().offset(20)
            make.height.equalTo(40)
            make.width.equalTo((KSreenWidth - 60) * 0.35)
        }
        
        view.addSubview(sendBtn)
        sendBtn.snp.makeConstraints { make in
            make.centerY.equalTo(cancelBtn)
            make.left.equalTo(cancelBtn.snp.right).offset(20)
            make.height.equalTo(40)
            make.width.equalTo((KSreenWidth - 60)*0.65)
        }
        sendBtn.setGradient(colors: [UIColor(red: 103/255.0, green: 197/255.0, blue: 255/255.0, alpha: 1),UIColor(red: 96/255.0, green: 154/255.0, blue: 255/255.0, alpha: 1)], startPoint: CGPoint(x: 0, y: 0.5), endPoint: CGPoint(x: 1, y: 0.5))
        
    }
    
    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }
    
    @objc func changeCancelAction() {
        self.navigationController?.popViewController(animated: true)
    }
    
    @objc func changeSendAction() {
        CNLiveMineViewModel.requestUploadIconAction(_select_image) { [weak self] type, statue in
            if statue {
                //再这里进行图片上传
                self!.reslut(self!._select_image)
                self!.navigationController?.popViewController(animated: true)
            }
        }
    }
    
    @objc func changeAvatarAction() {
        var crop = PhotoCroppingConfiguration.init()
        crop.isRoundCrop = true
        let configuration = PhotoEditorConfiguration()
        configuration.state = .cropping
        configuration.cropping = crop
        configuration.fixedCropState = true
        let config = PhotoTools.getWXPickerConfig()
        config.selectMode = .single
        config.selectOptions = .photo
        config.photoEditor = configuration
        config.maximumSelectedPhotoCount = 1
        let pickerController = PhotoPickerController(picker: config)
        pickerController.pickerDelegate = self
        pickerController.isOriginal = false
        self.navigationController?.present(pickerController, animated: true, completion: nil)
    }
}

extension CNLiveMineInfoViewController {
    
    func pickerController(_ pickerController: PhotoPickerController,
                            didFinishSelection result: PickerResult) {
        result.getImage { [weak self] (image, photoAsset, index) in
            if let image = image {
                self!._select_image = image
            }else {
                print("failed")
            }
        } completionHandler: { [weak self] (images) in
            self!.imageView.image = images.first
            self!.cancelBtn.isHidden = false
            self!.sendBtn.isHidden = false
            self!.changeBtn.isHidden = true
        }
    }
}