Jelajahi Sumber

图片录音时恢复删除的录音时,更新字幕的进入和退出时长

harry 3 tahun lalu
induk
melakukan
ba564883b1

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

@@ -1021,7 +1021,6 @@ public class BFRecordScreenController: BFBaseViewController {
                         for titleM in titlsList {
                             titleM.timelineIn = titleM.timelineIn - currDuration
                             titleM.timelineOut = titleM.timelineOut - currDuration
-                            
                         }
                     }
                 }
@@ -1241,17 +1240,22 @@ public class BFRecordScreenController: BFBaseViewController {
                 } else {
                     tuples?.forEach { tuple in
                         itemModels[currItemModelIndex].voiceStickers.insert(tuple.0, at: tuple.1)
-                        let currDuration = tuple.0.endCMTime.seconds - tuple.0.startCMTime.seconds
-                        itemModels[currItemModelIndex].materialDuraion = itemModels[currItemModelIndex].materialDuraion + currDuration
+                        let currDuration = tuple.0.endCMTime - tuple.0.startCMTime
+                        itemModels[currItemModelIndex].materialDuraion = itemModels[currItemModelIndex].materialDuraion + currDuration.seconds
                         for (index, item) in itemModels[currItemModelIndex].voiceStickers.enumerated() {
                             if index > tuple.1 {
-                                // 注:开始时间减去duration or 等一前一段录音的结束时间
-//                                item.startCMTime.seconds -= currDuration
-//                                item.endCMTime.seconds -= currDuration
-                                let startTime = item.startCMTime.seconds
-                                let endTime = item.endCMTime.seconds
-                                item.startCMTime = CMTime(seconds: startTime + currDuration, preferredTimescale: 1000)
-                                item.endCMTime = CMTime(seconds: endTime + currDuration, preferredTimescale: 1000)
+                                // 注:之后的录音和字幕增加对应的时长
+                                item.startCMTime = item.startCMTime + currDuration
+                                item.endCMTime = item.endCMTime + currDuration
+                                
+                                let titlsList = itemModels[currItemModelIndex].titleStickers.filter({ tm in
+                                    tm.taskID == item.titleTaskId
+                                })
+                                
+                                for titleM in titlsList {
+                                    titleM.timelineIn = titleM.timelineIn + currDuration
+                                    titleM.timelineOut = titleM.timelineOut + currDuration
+                                }
                             }
                         }
                     }