//
|
// PhotoPickerView.swift
|
// BrokerDriver
|
//
|
// Created by 无故事王国 on 2023/4/28.
|
//
|
|
import UIKit
|
import QMUIKit
|
import TZImagePickerController
|
|
class PhotoPickerView: UIView,JQNibView{
|
|
@IBOutlet weak var btn_1: QMUIButton!
|
@IBOutlet weak var btn_2: QMUIButton!
|
@IBOutlet weak var view_container: UIView!
|
@IBOutlet weak var view_heiCons: NSLayoutConstraint!
|
|
private var clouse:((Data)->Void)?
|
|
override func awakeFromNib() {
|
super.awakeFromNib()
|
btn_1.imagePosition = .left
|
btn_2.imagePosition = .left
|
btn_1.spacingBetweenImageAndTitle = 7
|
btn_2.spacingBetweenImageAndTitle = 7
|
view_heiCons.constant = 0
|
alpha = 0
|
layoutIfNeeded()
|
}
|
|
static func show(_ clouse:@escaping (Data)->Void){
|
let pickerView = PhotoPickerView.jq_loadNibView()
|
pickerView.frame = screnDelegate?.window?.frame ?? .zero
|
screnDelegate?.window?.addSubview(pickerView)
|
pickerView.view_heiCons.constant = JQ_ScreenW * 0.394 + UIDevice.jq_safeEdges.bottom
|
pickerView.clouse = clouse
|
UIView.animate(withDuration: 0.4) {
|
pickerView.alpha = 1
|
pickerView.layoutIfNeeded()
|
}
|
}
|
|
@IBAction func openAction(_ sender: UIButton) {
|
|
if sender == btn_1{
|
guard UIImagePickerController.isSourceTypeAvailable(.camera) else {
|
alert(msg: "The Camera unavailable");return
|
}
|
//iOS15.0未完全授权会崩溃
|
TZImageManager.default().requestAuthorization {
|
let p = UIImagePickerController()
|
p.delegate = self
|
p.allowsEditing = false
|
p.sourceType = .camera
|
JQ_currentViewController().present(p, animated: true, completion: nil)
|
}
|
}else{
|
let p = TZImagePickerController(maxImagesCount: 1, columnNumber: 4, delegate: self)
|
p!.allowTakeVideo = false
|
p!.allowTakePicture = false
|
p!.sortAscendingByModificationDate = true
|
p!.allowPickingVideo = false
|
p!.allowCrop = false
|
JQ_currentViewController().present(p!, animated: true, completion: nil)
|
}
|
}
|
|
@IBAction func cancelAction(_ sender: UIButton) {
|
closeAction()
|
}
|
|
private func closeAction(){
|
view_heiCons.constant = 0
|
UIView.animate(withDuration: 0.4) {
|
self.alpha = 0
|
self.layoutIfNeeded()
|
}
|
}
|
|
override func layoutSubviews() {
|
super.layoutSubviews()
|
view_container.jq_addCorners(corner: [.topLeft,.topRight], radius: 12)
|
}
|
}
|
|
extension PhotoPickerView:TZImagePickerControllerDelegate{
|
|
public func imagePickerController(_ picker: TZImagePickerController!, didFinishPickingPhotos photos: [UIImage]!, sourceAssets assets: [Any]!, isSelectOriginalPhoto: Bool, infos: [[AnyHashable : Any]]!) {
|
guard let pngData = photos.first?.jpegData(compressionQuality: 0.5) else { return alert(msg: "invaild photo") }
|
clouse?(pngData)
|
closeAction()
|
}
|
}
|
|
extension PhotoPickerView:UIImagePickerControllerDelegate & UINavigationControllerDelegate {
|
|
public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
|
picker.dismiss(animated: true) { [weak self] in
|
guard let originImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage,let pngData = originImage.jpegData(compressionQuality: 0.5) else { return alert(msg: "invaild photo") }
|
self?.clouse?(pngData)
|
self?.closeAction()
|
}
|
}
|
}
|