浏览代码

修改字幕删除逻辑

jsonwang 3 年之前
父节点
当前提交
9ecc1cc704
共有 1 个文件被更改,包括 21 次插入18 次删除
  1. 21 18
      BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

+ 21 - 18
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -16,7 +16,7 @@ import Photos
 import UIKit
 
 struct WithDrawModel {
-    var type: Int // 0:拖动; 1:预览播放暂停 2: 录音结束  3: 删除录音  4: 删除字幕
+    var type: Int // 0:拖动; 1:预览播放暂停 2: 录音结束  3: 删除录音
     var timestamp: Double
     var deletedVoices: [(PQVoiceModel, Int)]?
     // add by ak 保存删除的字幕数据用于恢复
@@ -463,16 +463,14 @@ public class BFRecordScreenController: BFBaseViewController {
                 let newRange = CMTimeRange(start: CMTime(seconds: model.startTime, preferredTimescale: 1000), end: CMTime(seconds: model.endTime, preferredTimescale: 1000))
 
                 var deletedVoices = [(PQVoiceModel, Int)]()
-
+                //要删除的字幕
+                var deletedTitlesTemp = [(PQEditSubTitleModel, Int)]()
                 for (i, m) in sself.itemModels[sself.currItemModelIndex].voiceStickers.enumerated() {
                     let originRange = CMTimeRange(start: CMTime(seconds: m.startTime, preferredTimescale: 1000), end: CMTime(seconds: m.endTime, preferredTimescale: 1000))
 
                     if CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0 {
                         deletedVoices.append((m, i))
-                        for titleS in sself.itemModels[sself.currItemModelIndex].titleStickers {
-                            if titleS.audioFilePath == m.wavFilePath {}
-                        }
-
+                        deletedTitlesTemp += sself.deleteTitles(voiceModel: m)
                         continue
                     }
                 }
@@ -491,6 +489,7 @@ public class BFRecordScreenController: BFBaseViewController {
                 // 添加撤销记录点
                 var event = WithDrawModel(type: 2, timestamp: model.startTime)
                 event.deletedVoices = deletedVoices
+                event.deletedTittles = deletedTitlesTemp
                 sself.events.append(event)
 
                 if sself.itemModels[sself.currItemModelIndex].mediaType == .IMAGE {
@@ -818,24 +817,28 @@ public class BFRecordScreenController: BFBaseViewController {
 
     /// 删除指定段落的所有字幕 数据
     /// - Parameter voiceModel: 删除的音频数据
-    func deleteTitles(voiceModel: PQVoiceModel) {
+    func deleteTitles(voiceModel: PQVoiceModel) -> [(PQEditSubTitleModel, Int)]{
         BFLog(message: "itemModels[currItemModelIndex].titleStickers  删除前:\(itemModels[currItemModelIndex].titleStickers.count) model.startTime: \(voiceModel.startTime) model.end: \(voiceModel.endTime)")
-        for title in itemModels[currItemModelIndex].titleStickers {
-            if let index = itemModels[currItemModelIndex].titleStickers.firstIndex(of: title) {
-                if title.timelineIn >= voiceModel.startTime, title.timelineOut <= voiceModel.endTime {
-                    // 删除前数据存入缓存
-                    let sutbitle = itemModels[currItemModelIndex].titleStickers[index]
-                    events.append(WithDrawModel(type: 4, timestamp: currentAssetProgress.seconds, deletedTittles: [(sutbitle, isStopAtRecordRange)]))
-
-                    itemModels[currItemModelIndex].titleStickers.remove(at: index)
-                }
+        var deleteTemp =  [(PQEditSubTitleModel, Int)]()
+     
+        for (index,title) in itemModels[currItemModelIndex].titleStickers.enumerated() {
+            if title.timelineIn >= voiceModel.startTime, title.timelineOut <= voiceModel.endTime {
+                deleteTemp.append((title,index))
             }
+            //从原数组中删除
+            if let index = itemModels[currItemModelIndex].titleStickers.firstIndex(of: title){
+                itemModels[currItemModelIndex].titleStickers.remove(at: index)
+                
+            }
+
         }
         BFLog(message: "itemModels[currItemModelIndex].titleStickers  删除后:\(itemModels[currItemModelIndex].titleStickers.count)")
 
         // 清空字幕UI
         subtitleLabel.text = ""
         subtitleLabel.backgroundColor = UIColor.clear
+        
+        return deleteTemp
     }
 
     @objc func deleteRecorded() {
@@ -865,9 +868,9 @@ public class BFRecordScreenController: BFBaseViewController {
             }
             searchStopAtRecordRange()
 
-            deleteTitles(voiceModel: model)
+           
             var event = WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)])
-            event.deletedTittles = nil
+            event.deletedTittles = deleteTitles(voiceModel: model)
             events.append(event)
         }
     }