فهرست منبع

停止时,状态判断

harry 3 سال پیش
والد
کامیت
bf505db701
1فایلهای تغییر یافته به همراه33 افزوده شده و 14 حذف شده
  1. 33 14
      BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

+ 33 - 14
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -1653,43 +1653,62 @@ public class BFRecordScreenController: BFBaseViewController {
     // 是否吸附在录音首尾处
     func searchStopAtRecordRange(needAdsorb: Bool = false) {
         // TODO: 滑动,播放暂停,撤销时,判断是否停止录音区间,是则删除相关录音,画笔,头像,字幕
-        let elems = itemModels[currItemModelIndex].voiceStickers.enumerated().filter { elem in
-            CMTimeCompare(elem.1.startCMTime, currentAssetProgress) <= 0 && elem.1.endCMTime > currentAssetProgress
+        
+        var startTime: CMTime?
+        var endTime: CMTime?
+        isStopAtRecordRange = -1
+
+        if currMediaType == .Camera {
+            let elems = itemModels[currItemModelIndex].videoStickers.enumerated().filter { elem in
+                CMTimeCompare(elem.1.timelineCMIn, currentAssetProgress) <= 0 && elem.1.timelineCMOut > currentAssetProgress
+            }
+            if elems.count > 0 {
+                startTime = elems[0].1.timelineCMIn
+                endTime = elems[0].1.timelineCMOut
+                isStopAtRecordRange = elems[0].0
+            }
+        }else {
+            let elems = itemModels[currItemModelIndex].voiceStickers.enumerated().filter { elem in
+                CMTimeCompare(elem.1.startCMTime, currentAssetProgress) <= 0 && elem.1.endCMTime > currentAssetProgress
+            }
+            if elems.count > 0 {
+                startTime = elems[0].1.startCMTime
+                endTime = elems[0].1.endCMTime
+                isStopAtRecordRange = elems[0].0
+            }
         }
 
-        if elems.count > 0 && !isEndPlay{
+        if startTime != nil && endTime != nil && !isEndPlay{
             //  TODO: 停在了录音区间,显示删除按钮
             if needAdsorb {
-                if fabs((elems[0].1.endCMTime - currentAssetProgress).seconds) < 0.5 {
-                    BFLog(1, message: "吸附在录音结尾, \(elems[0].1.endCMTime.seconds)")
+                if fabs((endTime! - currentAssetProgress).seconds) < 0.5 {
+                    BFLog(1, message: "吸附在录音结尾, \(endTime!.seconds)")
                     //                changeWithDrawBtnLayout(false)
-                    changeProgress(changCMTime: elems[0].1.endCMTime)
-                    progressThumV.progress = elems[0].1.endCMTime.seconds
+                    changeProgress(changCMTime: endTime!)
+                    progressThumV.progress = endTime!.seconds
 
                     searchStopAtRecordRange(needAdsorb: false)
                     return
                 } else {
-                    if fabs((elems[0].1.startCMTime - currentAssetProgress).seconds) < 0.5 {
+                    if fabs((startTime! - currentAssetProgress).seconds) < 0.5 {
                         BFLog(1, message: "吸附在录音开始")
                         //                    changeWithDrawBtnLayout(true)
-                        changeProgress(changCMTime: elems[0].1.startCMTime)
-                        progressThumV.progress = elems[0].1.startCMTime.seconds
+                        changeProgress(changCMTime: startTime!)
+                        progressThumV.progress = startTime!.seconds
                     }
                     deleteRecordBtn.isHidden = false
                     recordBtn.isHidden = true
                     // add by ak 这里 isHidden 无效
                     recordBtn.alpha = 0
-                    isStopAtRecordRange = elems.first!.0
 
-                    BFLog(1, message: "停在了录音区间里 \(isStopAtRecordRange), currTime:\(currentAssetProgress.seconds), 录音范围:\(elems[0].1.startCMTime.seconds) - \(elems[0].1.endCMTime.seconds)")
+                    BFLog(1, message: "停在了录音区间里 \(isStopAtRecordRange), currTime:\(currentAssetProgress.seconds), 录音范围:\(startTime!.seconds) - \(endTime!.seconds)")
                 }
             } else {
                 deleteRecordBtn.isHidden = false
                 recordBtn.isHidden = true
                 recordBtn.alpha = 0
 
-                isStopAtRecordRange = elems.first!.0
-                BFLog(1, message: "停在了录音区间里 \(isStopAtRecordRange), currTime:\(currentAssetProgress.seconds), 录音范围:\(elems[0].1.startCMTime.seconds) - \(elems[0].1.endCMTime.seconds)")
+                BFLog(1, message: "停在了录音区间里 \(isStopAtRecordRange), currTime:\(currentAssetProgress.seconds), 录音范围:\(startTime!.seconds) - \(endTime!.seconds)")
             }
 
         } else {