Music_Player3/MusicPlayer/MP/ViewControllers/Base(基类-导航栏-标签栏-计时器-播放器)/CountTimerViewController.swift
Mr.zhou 96147c5e37 项目:Musicoo
版本:A面 1.0
构建:1.1
更新内容:对项目A面功能的实现,经测试确定各项功能无问题。
更新时间:2024年4月12日 11:20
上传状态:已上传App Connect
2024-04-12 11:19:58 +08:00

107 lines
4.2 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.

//
// CountTimerViewController.swift
// MusicPlayer
//
// Created by Mr.Zhou on 2024/3/28.
//
import UIKit
class CountTimerViewController: UIViewController {
@IBOutlet weak var timesLabel: UILabel!
@IBOutlet weak var contentView: UIView!
//
private lazy var segmentedView:UISegmentedControl = {
//
let titles:[String] = timeLevels.map{($0.title)}
//SegmentedControl
let segmentedView:UISegmentedControl = .init(items: titles)
//Item
if #available(iOS 13.0, *) {
segmentedView.selectedSegmentTintColor = .init(hex: "#80F988")
} else {
segmentedView.tintColor = .init(hex: "#80F988")
}
//线
segmentedView.setDividerImage(UIImage(), forLeftSegmentState: .normal, rightSegmentState: .normal, barMetrics: .default)
//
segmentedView.setTitleTextAttributes([.foregroundColor:UIColor(hex: "#FFFFFF", alpha: 0.8), .font:UIFont.systemFont(ofSize: 14, weight: .medium)], for: .normal)
segmentedView.setTitleTextAttributes([.foregroundColor:UIColor(hex: "#000000"), .font:UIFont.systemFont(ofSize: 14, weight: .heavy)], for: .selected)
//
segmentedView.addTarget(self, action: #selector(switchTimesAction(_ :)), for: .valueChanged)
return segmentedView
}()
//
private lazy var timeLevels:[MPCountTimerLevel] = {
var array:[MPCountTimerLevel] = []
for item in MPCountTimerLevel.allCases {
array.append(item)
}
return array
}()
override func viewDidLoad() {
super.viewDidLoad()
//
view.layer.masksToBounds = true
view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
view.layer.cornerRadius = 18*width
//
contentView.addSubview(segmentedView)
segmentedView.snp.makeConstraints { make in
make.width.equalTo(330*width)
make.height.equalTo(38*width)
make.center.equalToSuperview()
}
//
segmentedView.selectedSegmentIndex = MPMediaCenterManager.shared.getCountTimerLevel().rawValue
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//
NotificationCenter.notificationKey.add(observer: self, selector: #selector(timesAction(_ :)), notificationName: .time_times)
NotificationCenter.notificationKey.add(observer: self, selector: #selector(completeAction(_ :)), notificationName: .stop_music)
}
deinit {
//
NotificationCenter.default.removeObserver(self)
}
//
@objc private func switchTimesAction(_ sender: UISegmentedControl) {
//
let selectedIndex = sender.selectedSegmentIndex
let value = timeLevels[selectedIndex]
//
if value != .OFF {
guard let music = MPMediaCenterManager.shared.getMusic() else {
//
print("No Data Music")
return
}
//
MPMediaCenterManager.shared.playerStart(music, actionType: .CountTime, countLevel: value)
}else {
//0
MPMediaCenterManager.shared.playerStop()
}
}
//
@objc private func timesAction(_ sender:Notification) {
DispatchQueue.main.async {
[weak self] in
guard let self = self else { return }
let time = sender.object as! TimeInterval
timesLabel.text = "Count down "+setTimesToMinSeconds(time)
}
}
//
@objc private func completeAction(_ sender:Notification) {
DispatchQueue.main.async {
[weak self] in
guard let self = self else { return }
timesLabel.text = "Timing off"
}
}
}