ShareView.swift 4.67 KB
//
//  ZCAlertView.swift
//  zc
//
//  Created by wyp on 2020/11/4.
//  Copyright © 2020 wyp. All rights reserved.
//

import UIKit
import MBProgressHUD
import SwiftUI

class ShareView: UIView {
    
    typealias clickAlertClosure = (_ index: Int) -> Void
    var clickClosure: clickAlertClosure!
    var shareImage: UIImage?
    
    @IBOutlet private weak var bgView: UIView!
    
    private let platformArray: [SSDKPlatformType] = [.subTypeWechatSession, .subTypeWechatTimeline, .typeQQ, .subTypeQZone, .typeSinaWeibo, .typeFacebook, .typeInstagram, .typeWhatsApp]
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        initFromNib()
        setupUI()
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder)
        initFromNib()
        setupUI()
    }
    
    private func initFromNib() {
        if let view = Bundle.main.loadNibNamed("ShareView", owner: self, options: nil)?.first as? UIView {
            view.frame = bounds
            self.addSubview(view)
        }
    }
    
    
    init(_ image: UIImage?) {
        super.init(frame: CGRect(x: 0, y: 0, width: SCREEN_WIDTH, height: SCREEN_HEIGHT))
        self.shareImage = image
        initFromNib()
        setupUI()
    }
    
    func setupUI() {
        bgView.layoutIfNeeded()
        self.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(clickView(_:))))
        bgView.setCorners(corners: [.topLeft, .topRight], radio: 15)
    }
    
    
    @objc private func clickView(_ gestureRecognizer: UITapGestureRecognizer) {
        dismiss()
    }
    
    
    

    @IBAction func clickBtnAction(_ sender: UIButton) {
        if (clickClosure != nil) {
            clickClosure!(sender.tag)
        }
        
        if sender.tag == 10 {
            dismiss()
        } else {
            checkInstalled(sender.tag)
        }
    }
    
    func checkInstalled(_ index: Int) {
        if ShareSDK.isClientInstalled(platformArray[index]) {
            getImage(index)
        } else {
            MBProgressHUD.showh(LocString("未安装该应用"))
        }
    }
    
    func getImage(_ index: Int) {
        if let image = shareImage {
            share(index, image: image)
        } else {
            SSEShareHelper.screenCaptureShare {[weak self] sImage, handler in
                if let sImage = sImage {
                    
                    sImage.getNativeImage { image in
                        if let image = image {
                            self?.share(index, image: image)
                        }
                    }
                   
                }
            } onStateChanged: { _, _, _, _ in
                
            }
        }
    }
    
    func share(_ index: Int, image: UIImage) {
        let shareParameters = NSMutableDictionary()
        shareParameters.ssdkSetupShareParams(byText: "", images: image, url: nil, title: "", type: .image)
        ShareSDK.share(platformArray[index], parameters: shareParameters) { responseState, dic, entity, error in
            if responseState == .success {
                if let curVC = UIViewController.getCurrentViewController() {
                    curVC.showAlert(title: "", message: LocString("分享成功"), cancelText: nil, confirm: nil)
                }
//                MBProgressHUD.showh(LocString("分享成功"))
            } else if responseState == .fail {
                if let curVC = UIViewController.getCurrentViewController() {
                    curVC.showAlert(title: "", message: LocString("分享失败"), cancelText: nil, confirm: nil)
                }
//                MBProgressHUD.showh(LocString("分享失败"))
//                print("分享失败\(index)")
            }
            self.dismiss()
        }
    }
      
    
    func show() {
        let wind = KeyWindow
        self.alpha = 0
        
        wind.addSubview(self)
        UIView.animate(withDuration: 0.25, animations: { () -> Void in
            self.alpha = 1
        })
    }
    
    @objc func dismiss() {
        MBProgressHUD.hide()
        UIView.animate(withDuration: 0.25, animations: { () -> Void in
            self.alpha = 0
        }, completion: { (finish) -> Void in
            if finish {
                self.removeFromSuperview()
            }
        })
    }
    
    deinit {
        print("deinit\(NSStringFromClass(type(of: self)))!!!!!!!")
    }
//
//    required init?(coder aDecoder: NSCoder) {
//        fatalError("init(coder:) has not been implemented")
//    }
//

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

}