Просмотр исходного кода

解决播放器 loading ,进入其他页面,仍然继续播放的问题

100Years 1 месяц назад
Родитель
Сommit
aaebf2d026

+ 7 - 2
AIRingtone/Business/TSThemeVC/TSThemeBrowseVC/TSThemeBrowseVC.swift

@@ -145,7 +145,8 @@ class TSThemeBrowseVC: TSBaseVC {
         kDelayMainShort {
             self.collectionView.scrollToItem(at: IndexPath(item: self.currentIndex, section: 0), at: .bottom, animated: false)
         }
-        browseViewModel.setFinallyIndex(currentIndex,ringtone:currentModel?.ringtone)
+
+        browseViewModel.finallyIndex = currentIndex
     }
     
 }
@@ -190,7 +191,11 @@ extension TSThemeBrowseVC {
     
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
-        browseViewModel.audioPlayer?.play()
+        if browseViewModel.audioPlayer?.playerUsable == true {
+            browseViewModel.audioPlayer?.play()
+        }else{
+            browseViewModel.audioPlayer?.playRingtone(ringtone: currentModel?.ringtone)
+        }
     }
 }
 

+ 0 - 1
AIRingtone/Business/VIewTool/TSRingToneCellView.swift

@@ -60,7 +60,6 @@ class TSRingToneCellView: TSBaseView {
             make.leading.equalTo(76)
             make.trailing.equalTo(50)
             make.top.equalTo(17)
-            make.height.equalTo(14)
         }
         
         timeLab.snp.makeConstraints { make in

+ 7 - 0
AIRingtone/Common/Tool/TSAudioPlayer/TSAudioPlayer.swift

@@ -32,6 +32,13 @@ class TSAudioPlayer {
         return 0
     }
     
+    //播放器是否可用
+    var playerUsable:Bool {
+        if audioPlayer != nil  {
+            return true
+        }
+        return false
+    }
 
     /// 初始化播放器
     /// - Parameter url: 音频文件的 URL

+ 17 - 5
AIRingtone/Common/Tool/TSBusinessAudioPlayer.swift

@@ -32,7 +32,7 @@ class TSBusinessAudioPlayer {
         }
         return 0.0
     }
-    
+
     var isPlaying:Bool{
         if let audioPlayer = audioPlayer {
             return audioPlayer.isPlaying
@@ -40,7 +40,17 @@ class TSBusinessAudioPlayer {
         return false
     }
     
-    private var isStop:Bool = false
+    
+    //播放器是否可用
+    var playerUsable:Bool {
+        if let audioPlayer = audioPlayer {
+            return audioPlayer.playerUsable
+        }
+        return false
+    }
+    
+    //加载音乐可能 2-3 秒有结果,停止加载后播放.
+    private var isStopPlayingAfterLoading:Bool = false
     private var loadingLogic:(show: () -> Void, hide: () -> Void)?
     init(stateChangeBlock:@escaping (PlayerState) -> Void) {
         self.stateChangeBlock = stateChangeBlock
@@ -57,13 +67,14 @@ class TSBusinessAudioPlayer {
             }
 
             loadingLogic?.show()
-            isStop = false
+            isStopPlayingAfterLoading = false
             TSCommonTool.downloadAndCacheFile(from: ringtone) { [weak self] path, error in
                 guard let self = self else { return }
                 loadingLogic?.hide()
                 
-                if isStop == true{
+                if isStopPlayingAfterLoading == true{
                     self.stop()
+                    isStopPlayingAfterLoading = false
                     return
                 }
                 
@@ -92,13 +103,14 @@ class TSBusinessAudioPlayer {
     }
     
     func stop() {
-        isStop = true
+        isStopPlayingAfterLoading = true
         loadingLogic?.hide()
         self.audioPlayer?.stop()
         stateChangeBlock(.stop)
     }
     
     func pause() {
+        isStopPlayingAfterLoading = true
         loadingLogic?.hide()
         self.audioPlayer?.pause()
         stateChangeBlock(.pause)