// // CardDetailVC.swift // Twear // // Created by yangbin on 2022/1/19. // import UIKit import YYText import SnapKit import TZImagePickerController import MBProgressHUD import swiftScan class CardDetailVC: UIViewController { var app: String = "" var qrString: String = "" @IBOutlet weak var scanImageView: UIImageView! @IBOutlet weak var noCardImageView: UIImageView! @IBOutlet weak var scanView: UIView! @IBOutlet weak var syncButton: UIButton! private let cardDic: [String: String] = ["微信": "WechatCard", "QQ": "QQCard", "Facebook": "FacebookCard", "WhatsApp": "WhatsAppCard", "Twitter": "TwitterCard"] private let appImageDic: [String: String] = ["微信": "push_wechat", "QQ": "push_qq", "Facebook": "push_Facebook", "WhatsApp": "push_WhatsApp", "Twitter": "push_Twitter"] lazy var detailLabel: YYLabel = { let text = YYLabel() text.textVerticalAlignment = .top text.textAlignment = .center text.numberOfLines = 0 // text.backgroundColor = .red text.textColor = .black view.addSubview(text) text.snp.makeConstraints { (make) in make.left.equalToSuperview().offset(14) make.right.equalToSuperview().offset(-14) make.top.equalTo(scanImageView.snp.bottom).offset(35) make.bottom.equalToSuperview().offset(-100) } return text }() lazy var activity: UIActivityIndicatorView = { let ac = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 36, height: 36)) ac.color = .white ac.hidesWhenStopped = true view.addSubview(ac) ac.center = syncButton.center return ac }() override func viewDidLoad() { super.viewDidLoad() title = LocString(app) + " " + LocString("名片") let str = LocString("绑定步骤:\n1.打开") + LocString(app) + LocString(",保存“我的二维码”到本地;\n2.打开HDF wear,进入设备-名片-") + LocString(app) + LocString(";\n3.点击上方二维码区域,添加或更换") + LocString(app) + LocString("二维码;\n4.点击下方绑定按钮,将二维码名片绑定至手表;\n\n\n注意事项:\n1.建议上传黑白颜色的二维码;\n2.请务必保持网络畅通;\n3.绑定过程中请将手表靠近手机,请勿操作手机和手表;\n4.确保手表电量充足。\n\n\n不会操作?") + LocString("点我") let text = NSMutableAttributedString(string: str, attributes: [.font: RegularFont(11), .foregroundColor: UIColor.rgbColorFromHex(0x808080)]) let range = NSRange(text.string.range(of: LocString("点我"))!, in: "") text.yy_setTextHighlight(range, color: UIColor.rgbColorFromHex(0xDD000B), backgroundColor: .clear) {[weak self] (containerView, text, range, rect) in let vc = UIStoryboard.loadViewControllerIdentifier(storyboardName: "Setting", identifier: "CardProcessVC") as! CardProcessVC vc.app = (self?.app)! self?.navigationController?.pushViewController(vc, animated: true) print("123") } text.yy_setTextUnderline(YYTextDecoration(style: .single, width: 1, color: UIColor.rgbColorFromHex(0xDD000B)), range: range) detailLabel.attributedText = text scanView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(photoAlbum))) if let image = UIImage.getImageFromPath(cardDic[app]!) { noCardImageView.isHidden = true scanImageView.image = image let arrayResult = LBXScanWrapper.recognizeQRImage(image: image) if arrayResult.count > 0, let result = arrayResult[0].strScanned { // self?.createQR(string: result) qrString = result print(qrString) } } else { noCardImageView.isHidden = false updateButton(false) } } func createQR(string: String) { // qrView.hidden = false // tView.hidden = true if string.count > 0 { // let image = UIImage.createQRForString(qrString: string, qrImageName: appImageDic[app]!) // scanImageView.image = image // return let qrImg = LBXScanWrapper.createCode(codeType: "CIQRCodeGenerator", codeString: string, size: scanImageView.bounds.size, qrColor: UIColor.black, bkColor: UIColor.white) let logoImg = UIImage(named: appImageDic[app]!) let image = LBXScanWrapper.addImageLogo(srcImg: qrImg!, logoImg: logoImg!, logoSize: CGSize(width: 36, height: 36)) if image.saveImageToPath(cardDic[app]!) { scanImageView.image = image noCardImageView.isHidden = true qrString = string updateButton(false) } } } @IBAction func syncCard(_ sender: Any) { // _ = MBProgressHUD.showMessage("") if qrString.count == 0 || syncButton.titleLabel?.text == LocString("绑定完成") {return} syncButton.setTitle(LocString(""), for: .normal) // let activity = UIActivityIndicatorView(frame: CGRect(x: 0, y: 0, width: 36, height: 36)) // activity.color = .white // view.addSubview(activity) // activity.center = syncButton.center activity.startAnimating() // let hud = MBProgressHUD.showAdded(to: syncButton, animated: true) // hud.bezelView.style = .solidColor // hud.margin = 0 // hud.bezelView.backgroundColor = .clear var type: Int = 0 switch app {//["微信", "QQ", "Facebook", "WhatsApp", "Twitter"] case "QQ": type = 0 case "微信": type = 1 case "WhatsApp": type = 2 case "Twitter": type = 3 case "Facebook": type = 4 default: break } BluetoothManager.shared.setCard(qrString, type: type) {[weak self] error in if error == nil { self?.updateButton(true) } else { self?.updateButton(false) } // hud.hide(animated: true) self?.activity.stopAnimating() // print("卡片设置--\(error)") } } func updateButton(_ status: Bool) { if status { syncButton.backgroundColor = LineColor syncButton.setTitle(LocString("绑定完成"), for: .normal) } else { if qrString.count == 0 { syncButton.backgroundColor = LineColor } else { syncButton.backgroundColor = TintColor } syncButton.setTitle(LocString("绑定"), for: .normal) } } //相册 @objc private func photoAlbum() { if PHPhotoLibrary.authorizationStatus().rawValue == 2 { MBProgressHUD.show(LocString("请在“设置-隐私-照片“选项中,允许'HDF wear'访问你的照片")) return } let picker = TZImagePickerController(maxImagesCount: 1, columnNumber: 3, delegate: self) picker?.modalPresentationStyle = .fullScreen picker?.allowPickingOriginalPhoto = false //原图 picker?.allowPickingVideo = false //视频 picker?.allowCameraLocation = false //位置 picker?.allowPickingGif = false //GIF picker?.allowTakePicture = false //内部拍照 picker?.allowCrop = false //裁剪 picker?.didFinishPickingPhotosHandle = {[weak self] (photos, assets, isSelectOriginalPhoto) -> Void in if let images = photos { let arrayResult = LBXScanWrapper.recognizeQRImage(image: images[0]) if arrayResult.count > 0, let result = arrayResult[0].strScanned { self?.createQR(string: result) } else { MBProgressHUD.showh(LocString("未识别到二维码")) } } } self.present(picker!, animated: true, completion: nil) } /* // MARK: - Navigation // In a storyboard-based application, you will often want to do a little preparation before navigation override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // Get the new view controller using segue.destination. // Pass the selected object to the new view controller. } */ } extension CardDetailVC: UIImagePickerControllerDelegate, UINavigationControllerDelegate, TZImagePickerControllerDelegate { }