Music_Player3/MusicPlayer/MP/MPPositive/ViewControllers/Base(基类,导航栏,标签栏)/MPPositive_BaseViewController.swift
2024-05-31 17:05:17 +08:00

151 lines
5.4 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 {
//
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()
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 private func popActionClick(_ sender:UIButton) {
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("Failure to obtain data", 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("Failure to obtain data", delay: 1.0){ [weak self] in
//
if self?.errorBlock != nil {
self?.errorBlock!()
}
}
}
}
@objc private func retryClick(_ sender:UIButton) {
if retryBlock != nil {
retryBlock!()
}
}
}