Music_Player3/relax.offline.mp3.music/MP/MPPositive/ViewControllers/Center(个人曲库页)/MPPositive_LibraryViewController.swift
2024-06-20 19:25:54 +08:00

259 lines
11 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_LibraryViewController.swift
// MusicPlayer
//
// Created by Mr.Zhou on 2024/4/19.
//
import UIKit
class MPPositive_LibraryViewController: MPPositive_BaseViewController {
//
private lazy var topImageView:UIImageView = {
let imageView:UIImageView = .init(image: .init(named: "Center_Top_bg"))
imageView.contentMode = .scaleAspectFill
return imageView
}()
//View
private lazy var blurView:UIVisualEffectView = setBlurView()
//View
private lazy var maskImageView:UIImageView = {
let imageView:UIImageView = .init(image: .init(named: "Player'mask"))
imageView.contentMode = .scaleAspectFill
return imageView
}()
//Label
private lazy var titleLabel:UILabel = createLabel("Your Library", font: .systemFont(ofSize: 32*width, weight: .regular), textColor: .white, textAlignment: .left)
//
private lazy var addBtn:UIButton = {
let btn:UIButton = UIButton()
btn.setBackgroundImage(UIImage(named: "Center_Add_'logo"), for: .normal)
btn.addTarget(self, action: #selector(addClick(_:)), for: .touchUpInside)
return btn
}()
///Label
private lazy var artistsLabel:UILabel = createLabel("0", font: .systemFont(ofSize: 12*width, weight: .light), textColor: .white, textAlignment: .center)
///Label
private lazy var songsLabel:UILabel = createLabel("0", font: .systemFont(ofSize: 12*width, weight: .light), textColor: .white, textAlignment: .center)
///Label
private lazy var loadsLabel:UILabel = createLabel("0", font: .systemFont(ofSize: 12*width, weight: .light), textColor: .white, textAlignment: .center)
///View
private lazy var actionViews:UIView = showTopView()
///tableView
private lazy var tableView:UITableView = {
let tableView = UITableView(frame: .init(x: 0, y: 0, width: screen_Width, height: screen_Height), style: .plain)
if #available(iOS 15.0, *) {
tableView.sectionHeaderTopPadding = 0
}
tableView.backgroundColor = .clear
tableView.separatorStyle = .none
tableView.estimatedRowHeight = 200
tableView.rowHeight = UITableView.automaticDimension
tableView.dataSource = self
tableView.delegate = self
tableView.register(MPPositive_LibraryTableViewCell.self, forCellReuseIdentifier: MPPositive_LibraryTableViewCellID)
tableView.contentInset = .init(top: 0, left: 0, bottom: 70*width, right: 0)
return tableView
}()
///广View
fileprivate lazy var adContainerView:UIView = {
let adContainerView:UIView = .init(frame: .init(x: 0, y: 0, width: screen_Width, height: 300*width))
adContainerView.backgroundColor = .clear
return adContainerView
}()
private let MPPositive_LibraryTableViewCellID = "MPPositive_LibraryTableViewCell"
override func viewDidLoad() {
super.viewDidLoad()
setTitle("")
configure()
view.backgroundColor = .init(hex: "#000000")
MP_AdMobManager.shared.configureLibraryNativeAd(rootController: self)
MP_AdMobManager.shared.loadLibraryNativeAd()
MP_AdMobManager.shared.layoutLibraryNativeAd(in: adContainerView, index: 0)
MP_AdMobManager.shared.onLibraryNativeAdBlock = {
[weak adContainerView] in
guard let adContainerView = adContainerView else {return}
MP_AdMobManager.shared.layoutLibraryNativeAd(in: adContainerView, index: 0)
}
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
reload()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
MP_AnalyticsManager.shared.me_b_pvAction()
}
//
private func reload() {
MPPositive_LoadCoreModel.shared.reloadCollectionListViewModels {
[weak self] in
guard let self = self else {return}
tableView.showMessage(MPPositive_LoadCoreModel.shared.listViewModels.count, title: "No Lists")
artistsLabel.text = "\(MPPositive_LoadCoreModel.shared.artistViewModels.count)"
songsLabel.text = "\(MPPositive_LoadCoreModel.shared.songViewModels.count)"
loadsLabel.text = "\(MPPositive_LoadCoreModel.shared.loadViewModels.count)"
tableView.reloadData()
}
}
///
@objc private func addClick(_ sender:UIButton) {
print("1")
}
private func configure() {
view.addSubview(topImageView)
topImageView.snp.makeConstraints { make in
make.left.top.right.equalToSuperview()
make.height.equalTo(291*width)
}
view.addSubview(blurView)
blurView.snp.makeConstraints { make in
make.left.top.right.equalToSuperview()
make.height.equalTo(topImageView)
}
view.addSubview(maskImageView)
maskImageView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalTo(topImageView)
make.height.equalTo(109*width)
}
navView.addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18*width)
make.centerY.equalToSuperview()
}
// navView.addSubview(addBtn)
// addBtn.snp.makeConstraints { make in
// make.height.width.equalTo(28*width)
// make.right.equalToSuperview().offset(-18*width)
// make.centerY.equalToSuperview()
// }
view.addSubview(actionViews)
actionViews.snp.makeConstraints { make in
make.top.equalTo(navView.snp.bottom).offset(20*width)
make.left.right.equalToSuperview()
make.height.equalTo(70*width)
}
view.addSubview(adContainerView)
adContainerView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(actionViews.snp.bottom).offset(20*width)
make.height.equalTo(0)
}
view.addSubview(tableView)
tableView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalTo(adContainerView.snp.bottom).offset(35*width)
}
//Label
let label = UILabel()
label.textColor = .white
label.font = .systemFont(ofSize: 20, weight: .regular)
label.text = "Love Lists"
view.addSubview(label)
label.snp.makeConstraints { make in
make.left.equalToSuperview().offset(18*width)
make.bottom.equalTo(tableView.snp.top).offset(-10*width)
}
}
///View
private func setBlurView() -> UIVisualEffectView {
//
let blurEffect = UIBlurEffect(style: .dark)
//
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.alpha = 0.7
blurEffectView.isUserInteractionEnabled = true
return blurEffectView
}
//View
private func showTopView() -> UIView {
let topView = UIView()
topView.backgroundColor = .clear
//
let first = actionView(artistsLabel, text: "Love_Artists_logo", tag: 0)
topView.addSubview(first)
first.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.height.equalTo(67*width)
make.width.equalTo(90*width)
make.centerX.equalToSuperview().multipliedBy(0.35)
}
let second = actionView(songsLabel, text: "Love_Song_logo", tag: 1)
topView.addSubview(second)
second.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.height.equalTo(67*width)
make.width.equalTo(90*width)
make.centerX.equalToSuperview()
}
let third = actionView(loadsLabel, text: "Offline_Songs_logo", tag: 2)
topView.addSubview(third)
third.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.height.equalTo(67*width)
make.width.equalTo(90*width)
make.centerX.equalToSuperview().multipliedBy(1.65)
}
topView.isUserInteractionEnabled = true
return topView
}
//View
private func actionView(_ label:UILabel, text:String, tag:Int) -> UIView {
let actionView = UIView()
actionView.backgroundColor = .clear
let imageView:UIImageView = .init(image: .init(named: text))
imageView.contentMode = .scaleAspectFill
actionView.addSubview(imageView)
imageView.snp.makeConstraints { make in
make.top.centerX.equalToSuperview()
}
actionView.addSubview(label)
label.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.width.equalToSuperview().multipliedBy(0.8)
make.bottom.equalToSuperview()
}
actionView.tag = tag
actionView.isUserInteractionEnabled = true
actionView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(actionClick(_:))))
return actionView
}
//
@objc private func actionClick(_ sender:UITapGestureRecognizer) {
let tag = sender.view?.tag
switch tag {
case 0:
let loveArtistsVC = MPPositive_LoveArtistsViewController()
navigationController?.pushViewController(loveArtistsVC, animated: true)
case 1:
let loveSongsVC = MPPositive_LoveSongsViewController()
navigationController?.pushViewController(loveSongsVC, animated: true)
default:
let offlineVC = MPPositive_OfflineSongsViewController()
navigationController?.pushViewController(offlineVC, animated: true)
}
MP_AdMobManager.shared.showLibraryInterstitialAdIfAvailable(completion: nil)
}
}
//MARK: - tableView
extension MPPositive_LibraryViewController:UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return MPPositive_LoadCoreModel.shared.listViewModels.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: MPPositive_LibraryTableViewCellID, for: indexPath) as! MPPositive_LibraryTableViewCell
cell.listViewModel = MPPositive_LoadCoreModel.shared.listViewModels[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let item = MPPositive_LoadCoreModel.shared.listViewModels[indexPath.row]
//
let listVC = MPPositive_ListShowViewController(item.collectionList.browseId ?? "", params: item.collectionList.params ?? "", title: item.title ?? "", subtitle: item.subtitle ?? "")
navigationController?.pushViewController(listVC, animated: true)
}
}