Music_Player3/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Base(基类,导航栏,标签栏)/MPPositive_BaseViewController.swift
2024-07-09 11:30:02 +08:00

166 lines
6.1 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// MPPositive_BaseViewController.swift
// MusicPlayer
//
// Created by Mr.Zhou on 2024/4/18.
//
import UIKit
///b
class MPPositive_BaseViewController: MP_BaseViewController, UIGestureRecognizerDelegate {
//
private lazy var navTitleLabel:UILabel = createLabel(font: .systemFont(ofSize: 20*width, weight: .regular), textColor: .white, textAlignment: .center)
//pop
private lazy var popBtn:UIButton = {
let btn = UIButton()
btn.setBackgroundImage(UIImage(named: "Poplogo"), for: .normal)
btn.addTarget(self, action: #selector(popActionClick(_ :)), for: .touchUpInside)
return btn
}()
//View
private lazy var errorView:UIView = createErrorView()
///
var errorBlock:(() -> Void)?
///
var retryBlock:(() -> Void)?
//View
lazy var navView:UIView = setTitleView()
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.interactivePopGestureRecognizer?.delegate = self
view.addSubview(navView)
}
deinit {
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
NotificationCenter.notificationKey.add(observer: self, selector: #selector(errorAction(_ :)), notificationName: .netWork_error_deal)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
NotificationCenter.default.removeObserver(self)
}
//titleView
private func setTitleView() -> UIView {
let topView = UIView(frame: .init(x: 0, y: statusBarHeight, width: screen_Width, height: 50*width))
topView.backgroundColor = .clear
topView.addSubview(navTitleLabel)
navTitleLabel.snp.makeConstraints { make in
make.center.equalToSuperview()
}
return topView
}
///title
func setTitle(_ text:String) {
navTitleLabel.text = text
}
///popBtn
func setPopBtn() {
navView.addSubview(popBtn)
popBtn.snp.makeConstraints { make in
make.width.height.equalTo(42*width)
make.centerY.equalToSuperview()
make.left.equalTo(16*width)
}
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
//,navView
view.bringSubviewToFront(navView)
}
//pop
@objc func popActionClick(_ sender:UIButton) {
MPPositive_Debouncer.shared.call {
[weak self] in
guard let self = self else {return}
navigationController?.popViewController(animated: true)
}
}
//errorView
private func createErrorView() -> UIView{
let errorView = UIView()
errorView.layer.masksToBounds = true
errorView.layer.borderColor = UIColor(hex: "#80F988").cgColor
errorView.layer.borderWidth = 1*width
errorView.layer.cornerRadius = 18*width
errorView.backgroundColor = .clear
//使
//
let iconImageView = UIImageView(image: .init(named: "empty"))
errorView.addSubview(iconImageView)
iconImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.centerY.equalToSuperview().multipliedBy(0.65)
make.width.equalTo(211*width)
make.height.equalTo(172*width)
}
let label = createLabel("Weak connection. Please check your network", font: .systemFont(ofSize: 13*width, weight: .regular), textColor: .white, textAlignment: .center)
errorView.addSubview(label)
label.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(iconImageView.snp.bottom).offset(8*width)
}
let retryBtn:UIButton = .init()
retryBtn.setTitle("Retry", for: .normal)
retryBtn.setTitleColor(.white, for: .normal)
retryBtn.titleLabel?.font = .systemFont(ofSize: 15*width, weight: .medium)
retryBtn.backgroundColor = .init(hex: "#80F988")
retryBtn.layer.masksToBounds = true
retryBtn.layer.cornerRadius = 16*width
retryBtn.addTarget(self, action: #selector(retryClick(_ :)), for: .touchUpInside)
errorView.addSubview(retryBtn)
retryBtn.snp.makeConstraints { make in
make.width.equalTo(180*width)
make.height.equalTo(45*width)
make.centerX.equalToSuperview()
make.bottom.equalToSuperview().offset(-15*width)
}
return errorView
}
//View
func setErrorView() {
view.addSubview(errorView)
errorView.snp.makeConstraints { make in
make.center.equalToSuperview()
make.width.equalTo(300*width)
make.height.equalTo(280*width)
}
}
//View
func removeErrorView() {
if errorView.superview != nil {
errorView.removeFromSuperview()
}
}
//
@objc private func errorAction(_ sender:Notification){
DispatchQueue.main.async {
[weak self] in
guard let self = self else {return}
MP_HUD.text("Weak connection.", delay: 1.0){ [weak self] in
//
if self?.errorBlock != nil {
self?.errorBlock!()
}
}
}
}
@objc private func retryClick(_ sender:UIButton) {
if retryBlock != nil {
retryBlock!()
}
}
//MARK- UIGestureRecognizerDelegate
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if gestureRecognizer === self.navigationController?.interactivePopGestureRecognizer {
// UINavigationController
//
return self.navigationController?.viewControllers.count ?? 0 > 1
}
return true
}
}