// // 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) if platformArray[index] == .typeInstagram { ShareSDK.share(byActivityViewController: platformArray[index], parameters: shareParameters) { responseState, dic, contentEntity, 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() } } else { 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 } */ }