|
@@ -15,9 +15,11 @@ import Photos
|
|
|
import UIKit
|
|
|
|
|
|
struct WithDrawModel {
|
|
|
- var type: Int // 0:拖动; 1:预览播放暂停 2: 录音结束 3: 删除录音
|
|
|
+ var type: Int // 0:拖动; 1:预览播放暂停 2: 录音结束 3: 删除录音 4: 删除字幕
|
|
|
var timestamp: Double
|
|
|
var deletedVoices: [(PQVoiceModel, Int)]?
|
|
|
+ // add by ak 保存删除的字幕数据用于恢复
|
|
|
+ var deletedTittles:[(PQEditSubTitleModel,Int)]?
|
|
|
}
|
|
|
|
|
|
public class BFRecordScreenController: BFBaseViewController {
|
|
@@ -31,6 +33,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
var currItemModelIndex = 0
|
|
|
public var itemModels = [BFRecordItemModel]()
|
|
|
+ //add by ak 当前的显示的字幕位置
|
|
|
var showSubtitleIndex = 0
|
|
|
// var shouldPlayRecordIndex:Int = -1 // 当前应该播放的录音资源序号
|
|
|
var currentPlayRecordIndex: Int = -1 // >= 0 :当前正在播放的录音资源序号; -3: 刚录音完,不需要播放录音; -1:初始化阶段
|
|
@@ -674,6 +677,34 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
audioSettingView.isHidden = false
|
|
|
}
|
|
|
+
|
|
|
+ /// 删除指定段落的所有字幕 数据
|
|
|
+ /// - Parameter voiceModel: 删除的音频数据
|
|
|
+ func deleteTitles(voiceModel:PQVoiceModel){
|
|
|
+ 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)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ BFLog(message: "itemModels[currItemModelIndex].titleStickers 删除后:\(itemModels[currItemModelIndex].titleStickers.count)")
|
|
|
+
|
|
|
+ //清空字幕UI
|
|
|
+ subtitleLabel.text = ""
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
@objc func deleteRecorded() {
|
|
|
if isStopAtRecordRange != -1, isStopAtRecordRange < itemModels[currItemModelIndex].voiceStickers.count {
|
|
@@ -682,6 +713,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
drawOrUpdateRecordProgessLable()
|
|
|
searchStopAtRecordRange()
|
|
|
events.append(WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)]))
|
|
|
+
|
|
|
+ deleteTitles(voiceModel: model)
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -754,6 +788,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
@objc func withdrawAction() {
|
|
|
pause()
|
|
|
if let action = events.last {
|
|
|
+
|
|
|
var jumpTime = action.timestamp
|
|
|
if action.type == 2 {
|
|
|
// 撤销录制
|
|
@@ -855,6 +890,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
let elems = itemModels[currItemModelIndex].voiceStickers.enumerated().filter { elem in
|
|
|
elem.1.startTime <= self.currentAssetProgress.seconds && elem.1.endTime > self.currentAssetProgress.seconds
|
|
|
}
|
|
|
+
|
|
|
isEndPlay = false
|
|
|
|
|
|
if elems.count > 0 {
|