//
|
// 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
|
}
|
|
// 是否支持自动转屏
|
override var shouldAutorotate: Bool {
|
return false
|
}
|
|
// 支持哪些屏幕方向
|
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
|
return .portrait
|
}
|
|
// 默认的屏幕方向(当前ViewController必须是通过模态出来的UIViewController(模态带导航的无效)方式展现出来的,才会调用这个方法)
|
override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation {
|
return .portrait
|
}
|
|
@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!))
|
}
|
|
}
|