107 lines
4.2 KiB
Swift
107 lines
4.2 KiB
Swift
//
|
||
// CountTimerViewController.swift
|
||
// MusicPlayer
|
||
//
|
||
// Created by Mr.Zhou on 2024/3/28.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
class MPSideA_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:[MPSideA_CountTimerLevel] = {
|
||
var array:[MPSideA_CountTimerLevel] = []
|
||
for item in MPSideA_CountTimerLevel.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 = MPSideA_MediaCenterManager.shared.getCountTimerLevel().rawValue
|
||
}
|
||
override func viewWillAppear(_ animated: Bool) {
|
||
super.viewWillAppear(animated)
|
||
//添加通知
|
||
NotificationCenter.notificationKey.add(observer: self, selector: #selector(timesAction(_ :)), notificationName: .sideA_time_times)
|
||
NotificationCenter.notificationKey.add(observer: self, selector: #selector(completeAction(_ :)), notificationName: .sideA_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 = MPSideA_MediaCenterManager.shared.getMusic() else {
|
||
//没有音乐实体,取消倒计时
|
||
print("No Data Music")
|
||
return
|
||
}
|
||
//启动倒计时器
|
||
MPSideA_MediaCenterManager.shared.playerStart(music, actionType: .CountTime, countLevel: value)
|
||
}else {
|
||
//停止倒计时,数值归0
|
||
MPSideA_MediaCenterManager.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"
|
||
}
|
||
}
|
||
}
|