younger_times
2023-08-15 2ebbafa4b4a2994ae979fed38e1266d9efd5657e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
    //
    //  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()
        }
    }
}