|
@@ -466,7 +466,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
duration = duration + (Double(temp.duration ?? "0") ?? 0)
|
|
|
}
|
|
|
sself.itemModels[sself.currItemModelIndex].materialDuraion = Double(String(format: "%.3f", duration)) ?? 0
|
|
|
- model.endTime = (self?.recordStartTime ?? 0) + (Double(model.duration ?? "0") ?? 0)
|
|
|
+ model.endTime = (self?.recordStartTime ?? 0) + (Double(model.duration ?? "0") ?? 0)
|
|
|
sself.currentAssetProgress = CMTime(seconds: model.endTime, preferredTimescale: 1000)
|
|
|
self?.isEndPlay = true
|
|
|
}
|
|
@@ -475,6 +475,8 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
self?.changeWithDrawBtnLayout(true)
|
|
|
// 注:在录制结束时矫正当前位置,避免跟指针无法对其
|
|
|
self?.indirectionView?.resetCurrentItem(start: model.startTime, end: model.endTime)
|
|
|
+ // 矫正进度
|
|
|
+ self?.resetCurrentProgress()
|
|
|
self?.deleteRecordBtn.isHidden = true
|
|
|
self?.recordBtn.isHidden = false
|
|
|
}
|
|
@@ -800,6 +802,24 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
itemModels[currItemModelIndex].voiceStickers.remove(at: isStopAtRecordRange)
|
|
|
events.append(WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)]))
|
|
|
indirectionView?.deleteItem(index: isStopAtRecordRange)
|
|
|
+ // 注:删除录音后图片素材需要回撤指针进度,同时后面录音往前挪
|
|
|
+ if itemModels[currItemModelIndex].mediaType == .IMAGE {
|
|
|
+ let currDuration = (Double(model.duration ?? "0") ?? 0)
|
|
|
+ itemModels[currItemModelIndex].materialDuraion = itemModels[currItemModelIndex].materialDuraion - currDuration
|
|
|
+ currentAssetProgress = CMTime(seconds: model.startTime, preferredTimescale: 1000)
|
|
|
+ // 更新进度
|
|
|
+ resetCurrentProgress()
|
|
|
+ for (index, item) in itemModels[currItemModelIndex].voiceStickers.enumerated() {
|
|
|
+ if index >= isStopAtRecordRange, index > 0 {
|
|
|
+ // 注:开始时间减去duration or 等一前一段录音的结束时间
|
|
|
+// item.startTime = item.startTime - currDuration
|
|
|
+ item.startTime = itemModels[currItemModelIndex].voiceStickers[index - 1].endTime
|
|
|
+ item.endTime = item.startTime + (Double(item.duration ?? "0") ?? 0)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 重绘录音进度视图
|
|
|
+ indirectionView?.resetAllSubViews(items: itemModels[currItemModelIndex].voiceStickers, percenWidth: progressThumV.thumbImageWidth / 2.0, totalDuration: itemModels[currItemModelIndex].materialDuraion)
|
|
|
+ }
|
|
|
searchStopAtRecordRange()
|
|
|
deleteTitles(voiceModel: model)
|
|
|
}
|
|
@@ -1580,7 +1600,11 @@ public extension BFRecordScreenController {
|
|
|
if (recordItem?.endTime ?? 0) >= (self?.itemModels[self?.currItemModelIndex ?? 0].voiceStickers.last?.endTime ?? 0) {
|
|
|
self?.isEndPlay = true
|
|
|
self?.pause()
|
|
|
+ // 注:矫正进度--播放结束后当前指针应该到当前素材总时长
|
|
|
+ self?.currentAssetProgress = CMTime(seconds: self?.itemModels[self?.currItemModelIndex ?? 0].materialDuraion ?? 0, preferredTimescale: 1000)
|
|
|
+ self?.resetCurrentProgress()
|
|
|
} else {
|
|
|
+ // 注:矫正进度--一段录音播放结束后当前指针应该到当前录音结束点
|
|
|
self?.currentAssetProgress = CMTime(seconds: recordItem?.endTime ?? 0, preferredTimescale: 1000)
|
|
|
// 当开始播放时重置录音播放起始时间
|
|
|
self?.recordStartPlayTime = self?.currentAssetProgress ?? CMTime.zero
|
|
@@ -1607,7 +1631,7 @@ public extension BFRecordScreenController {
|
|
|
resetCurrentProgress()
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/// 重置进度
|
|
|
func resetCurrentProgress() {
|
|
|
DispatchQueue.main.async { [weak self] in
|