杨锴
2024-09-12 e15c976316feef72ff9bcabce38e0a078f9505db
XQMuse/Root/Home/VC/HomeItemDetailVC.swift
@@ -8,7 +8,7 @@
import UIKit
import JQTools
class HomeItemDetailVC: BaseVC {
class HomeItemDetailVC: BaseVC,PayMusicDelegate{
            @IBOutlet weak var slider_voice: UISlider!
            @IBOutlet weak var view_function: UIView!
@@ -22,9 +22,11 @@
            @IBOutlet weak var view_playState: UIView!
            @IBOutlet weak var label_playState: UILabel!
            @IBOutlet weak var btn_playMode: UIButton!
            @IBOutlet weak var label_currentTime: UILabel!
            @IBOutlet weak var label_totalTime: UILabel!
            
            private var collect_bitem:UIBarButtonItem!
            private var audioPlayer:AudioPlayer = AudioPlayer.getSharedInstance()
            private var id:Int!
            private var settingViewModel = UserDefaultSettingViewModel.getSetting()
            private var model:MeditationModel?{
@@ -52,16 +54,20 @@
                        btn_playMode.isSelected = settingViewModel?.playModel == .singleLoop
                        if AudioPlayer.getSharedInstance().times.value != nil{
                        if audioPlayer.times.value != nil{
                                    startMiniRunloop()
                        }else{
                                    endMiniRunloop()
                        }
                        Services.getMeditationDetail(id: id).subscribe(onNext: {data in
                        Services.getMeditationDetail(id: id).subscribe(onNext: {[unowned self] data in
                                    self.model = data.data
                                    self.collect_bitem.image = data.data?.favorite == .yes ? UIImage(named: "btn_collect_s"):UIImage(named: "btn_collect_1")
                                    self.collect_bitem.tintColor = data.data?.favorite == .yes ? UIColor(hexString: "fe5b60"):.white
                                    if audioPlayer.meditationModel?.id == data.data?.id{
                                                audioPlayer.delegate = self
                                    }
                        }).disposed(by: disposeBag)
            }
@@ -104,7 +110,7 @@
            }
            override func setRx() {
                        AudioPlayer.getSharedInstance().times.subscribe {[weak self] t in
                        audioPlayer.times.subscribe {[weak self] t in
                                    guard let weakSelf = self else { return }
                                    guard let time = t,time > 0 else {weakSelf.endMiniRunloop();return}
                                    let turple = Date.jq_formateToTime_tuple(time)
@@ -122,7 +128,6 @@
                        super.viewWillAppear(animated)
                        (navigationItem.leftBarButtonItem?.customView as? UIButton)?.setImage(UIImage(named: "btn_back")?.withTintColor(.white), for: .normal)
            }
            private func startMiniRunloop(){
                        // 创建旋转动画
@@ -142,12 +147,20 @@
            @IBAction func playAction(_ sender: UIButton) {
//                        showHUD("准备播放")
                        if var m = model{
                                    m.backgroundUrl = "https://downsc.chinaz.net/Files/DownLoad/sound1/201906/11582.mp3,https://www.cambridgeenglish.org/images/153149-movers-sample-listening-test-vol2.mp3"
                                    m.tutorAudioUrl = "https://downsc.chinaz.net/files/download/sound1/201206/1638.mp3"
                                    audioPlayer.playBGMAt(firstPlayIndex: 0, model: m, delegate: self)
                        }
            }
            @IBAction func timeAction(_ sender: UIButton) {
                        CountdownChooseListView.show {[weak self] times in
                                    guard let weakSelf = self else { return }
                                    AudioPlayer.getSharedInstance().setTimer(times: times * 60)
                                    weakSelf.audioPlayer.setTimer(times: times * 60)
                                    //                                    if times <= 0{
                                    //                                                weakSelf.timer = nil
@@ -178,11 +191,6 @@
                        vc.modalPresentationStyle = .custom
                        present(vc, animated: true)
            }
            @IBAction func beLikeAction(_ sender: UIButton) {
            }
            @IBAction func playWayAction(_ sender: UIButton) {
                        UIView.animate(withDuration: 0.5) {
@@ -231,4 +239,36 @@
            override var preferredStatusBarStyle: UIStatusBarStyle{
                        return .lightContent
            }
            func playState(_ state:PlayMusicState){
                        print("music:当前状态:\(state)")
                        guard audioPlayer.meditationModel?.id == model?.id else {return}
                        switch state {
                                    case .playing:
                                                PayMusicVC.show(model: model!)
                                                if btn_play.isHidden == false {btn_play.isHidden = true}
                                                hiddenHUD()
                                    case .paurse:
                                                btn_play.isHidden = false
                                    case .end:break
                                    case .next:break
                        }
            }
            func playListen(currentInterval:TimeInterval,totalInterval:TimeInterval){
                        guard audioPlayer.meditationModel?.id == model?.id else {return}
                        guard !totalInterval.isNaN else {return}
                        guard !currentInterval.isNaN else {return}
                        let v = currentInterval / totalInterval * 100
                        print("music:当前时间:\(currentInterval) ---- \(totalInterval) -- \(v)%")
                        self.slider_voice.value = Float(v)
                        let current = Date.jq_formateToTime_tuple(Int(currentInterval))
                        label_currentTime.text = String(format: "%02ld:%02ld", current.hour * 60 + current.minute,current.second)
                        let total = Date.jq_formateToTime_tuple(Int(totalInterval))
                        label_totalTime.text = String(format: "%02ld:%02ld", total.hour * 60 + total.minute,total.second)
            }
}