杨锴
2024-08-14 909e20941e45f8712c012db602034b47da0bfdb0
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
//
//  BaseViewController.swift
//  BrokerDriver
//
//  Created by 无故事王国 on 2023/4/24.
//
 
import UIKit
import RxSwift
import RxRelay
import RxCocoa
import JQTools
 
class BaseVC: UIViewController {
 
                var disposeBag:DisposeBag!
                let refreshStatus = BehaviorSubject(value: RefreshStatus.others)
 
                var yy_popBlock:(() -> Void)?
                open var nav_back_img:UIImage = UIImage.init(named: "btn_back") ?? UIImage.init() {
                                didSet {
                                                let btn = navigationItem.leftBarButtonItem?.customView as! UIButton
                                                btn.setImage(nav_back_img, for: .normal)
                                }
                }
 
                override func viewWillAppear(_ animated: Bool) {
                                super.viewWillAppear(animated)
                                navigationController?.delegate?.navigationController?(navigationController!, willShow: self, animated: true)
                }
 
                override func viewDidLoad() {
                                super.viewDidLoad()
                                LogInfo(String(format: "%@ 已加载", NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!))
                                disposeBag = DisposeBag()
                                setUI()
                                setRx()
                                setData()
 
                                if navigationController?.viewControllers.count ?? 0 > 1{
                                                if navigationController is BaseNav{
                                                                navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img, target: self, alignment:.left, action: #selector(backItemEvent)).item
                                                }else{
                                                                navigationItem.leftBarButtonItem = UIBarButtonItem.jq_creat(image: nav_back_img, target: self, alignment:.left, action: #selector(backItemEvent)).item
                                                }
                                }
 
                }
 
                func setRx(){
                }
 
                func setUI(){
                                view.backgroundColor = .white
                }
 
                func setData(){
 
                }
 
                func refreshUI(){}
 
                func push(vc:UIViewController){
                                vc.hidesBottomBarWhenPushed = true
                                navigationController?.pushViewController(vc, animated: true)
                }
 
                override var preferredStatusBarStyle: UIStatusBarStyle{
                                return .default
                }
 
                @objc fileprivate func backItemEvent() {
                                // 拦截pop事件
                                if (yy_popBlock != nil) {
                                                yy_popBlock?()
                                                return
                                }
                                navigationController?.popViewController(animated: true)
                }
 
                override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
                                coordinator.animate(alongsideTransition: { [weak self] (context) in
                                                let orient = UIApplication.shared.statusBarOrientation
                                                switch orient {
                                                                case .landscapeLeft, .landscapeRight:
                                                                                //横屏时禁止左拽滑出
                                                                                self?.navigationController?.interactivePopGestureRecognizer?.isEnabled = false
                                                                default:
                                                                                //竖屏时允许左拽滑出
                                                                                self?.navigationController?.interactivePopGestureRecognizer?.isEnabled = true
                                                }
                                })
                                super.viewWillTransition(to: size, with: coordinator)
                }
 
 
                deinit {
                                LogInfo(String(format: "%@ 已释放", NSStringFromClass(self.classForCoder).components(separatedBy: ".").last!))
                }
 
}