瀏覽代碼

Merge branch 'master' of https://git.yishihui.com/iOS/BFRecordScreenKit

* 'master' of https://git.yishihui.com/iOS/BFRecordScreenKit:
  1.多素材-控制录制时机
harry 3 年之前
父節點
當前提交
0e423d5934
共有 1 個文件被更改,包括 10 次插入8 次删除
  1. 10 8
      BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

+ 10 - 8
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -514,7 +514,7 @@ public class BFRecordScreenController: BFBaseViewController {
 
         // MARK: -  录音结束
 
-        recorderManager?.endRecordHandle = { [weak self] voideModel, _ in
+        recorderManager?.endRecordHandle = { [weak self, weak recorderManager] voideModel, _ in
             if let sself = self, let model = voideModel, FileManager.default.fileExists(atPath: model.wavFilePath ?? "") {
                 // 加入到语音数组里
                 model.endCMTime = sself.currentAssetProgress
@@ -602,6 +602,7 @@ public class BFRecordScreenController: BFBaseViewController {
                 }
                 sself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
                 BFLog(3, message: "重置播放index-\(#function) = \(sself.currentPlayRecordIndex)")
+                recorderManager?.voiceModel = nil
             }
         }
         recorderManager?.cancelRecordHandle = { [weak self] voiceModel in
@@ -637,9 +638,6 @@ public class BFRecordScreenController: BFBaseViewController {
         bottomeView.addSubview(progreddL)
         //        view.addSubview(toolV)
         bottomeView.addSubview(recordBtn)
-        if itemModels[currItemModelIndex].mediaType == .IMAGE {
-            recordBtn.isEnabled = true
-        }
         bottomeView.addSubview(deleteRecordBtn)
         bottomeView.addSubview(withDrawBtn)
         //        bottomeView.addSubview(changeVoiceBtn)
@@ -1592,8 +1590,11 @@ public class BFRecordScreenController: BFBaseViewController {
                             DispatchQueue.main.async { [weak self, weak itemModel] in
                                 self?.progressThumV.recordItem = itemModel
                                 self?.progressThumV.isHidden = false
+                                self?.recordBtn.isEnabled = true
                             }
                         }
+                    } else {
+                        recordBtn.isEnabled = true
                     }
                 }
             }
@@ -1644,7 +1645,6 @@ public class BFRecordScreenController: BFBaseViewController {
         } else {
             assetPlayer = AVPlayer(playerItem: item)
             assetPlayer?.volume = noSpeakVolume
-            recordBtn.isEnabled = true
             avplayerTimeObserver?.invalidate()
             avplayerTimeObserver = assetPlayer?.addPeriodicTimeObserver(forInterval: CMTime(value: 1, timescale: 1000), queue: DispatchQueue.global()) { [weak self] time in
                 // 进度监控
@@ -1910,6 +1910,8 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
         BFLog(1, message: "滚动结束")
         let page = Int((scrollView.contentOffset.x + scrollView.frame.width / 2) / scrollView.frame.width)
         if page != currItemModelIndex {
+            // 切换素材时先把录制状态切为不可用,延迟可点,避免在缩略图未加载出来时即可录制
+            recordBtn.isEnabled = false
             // 暂停
             pause()
             // 如果在录制中,停止录制
@@ -1929,9 +1931,11 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
             playBtn.isSelected = (recordItem.mediaType == .IMAGE && recordItem.voiceStickers.count <= 0)
             // 重绘录音区域
             progressThumV.recordItem = recordItem
-            DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { [weak self] in
+            DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { [weak self] in
                 /// 重绘录音进度视图
                 self?.resetAllIndirectionView()
+                // 重绘录音进度
+                self?.recordBtn.isEnabled = true
             }
             // 更新缩略图
             progressThumV.isHidden = false
@@ -1951,8 +1955,6 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
             if recordItem.mediaType == .VIDEO {
                 reloadMaterial()
                 assetPlayer?.seek(to: .zero, toleranceBefore: CMTime(value: 1, timescale: 1_000_000), toleranceAfter: CMTime(value: 1, timescale: 1_000_000))
-            } else {
-                recordBtn.isEnabled = true
             }
             if changeItemHandle != nil {
                 changeItemHandle!(page)