|
@@ -998,11 +998,12 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
currentPlayRecordIndex = -1
|
|
|
hadPrepareToPlayRecord = false
|
|
|
BFLog(1, message: "isDragingProgressSlder : \(isDragingProgressSlder)")
|
|
|
- searchStopAtRecordRange()
|
|
|
+ searchStopAtRecordRange(needAdsorb: true)
|
|
|
changeWithDrawBtnLayout(false)
|
|
|
}
|
|
|
|
|
|
- func searchStopAtRecordRange() {
|
|
|
+ // 是否吸附在录音首尾处
|
|
|
+ func searchStopAtRecordRange(needAdsorb:Bool = false) {
|
|
|
pauseTime = currentAssetProgress.seconds
|
|
|
|
|
|
// TODO: 滑动,播放暂停,撤销时,判断是否停止录音区间,是则删除相关录音,画笔,头像,字幕
|
|
@@ -1014,29 +1015,39 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
if elems.count > 0 {
|
|
|
// TODO: 停在了录音区间,显示删除按钮
|
|
|
- if fabs(elems[0].1.endTime - currentAssetProgress.seconds) < 0.5 {
|
|
|
- BFLog(1, message: "吸附在录音结尾")
|
|
|
-// changeWithDrawBtnLayout(false)
|
|
|
- changeProgress(progress: Float(elems[0].1.endTime / itemModels[currItemModelIndex].materialDuraion))
|
|
|
- progressThumV.progress = elems[0].1.endTime
|
|
|
+ if needAdsorb {
|
|
|
+ if fabs(elems[0].1.endTime - currentAssetProgress.seconds) < 0.5 {
|
|
|
+ BFLog(1, message: "吸附在录音结尾")
|
|
|
+ // changeWithDrawBtnLayout(false)
|
|
|
+ changeProgress(progress: Float(elems[0].1.endTime / itemModels[currItemModelIndex].materialDuraion))
|
|
|
+ progressThumV.progress = elems[0].1.endTime
|
|
|
+
|
|
|
+ deleteRecordBtn.isHidden = true
|
|
|
+ recordBtn.isHidden = false
|
|
|
+ isStopAtRecordRange = -1
|
|
|
+ BFLog(1, message: "停在了录音区间外 \(isStopAtRecordRange)")
|
|
|
+ } else {
|
|
|
+ if fabs(elems[0].1.startTime - currentAssetProgress.seconds) < 0.5 {
|
|
|
+ BFLog(1, message: "吸附在录音开始")
|
|
|
+ // changeWithDrawBtnLayout(true)
|
|
|
+ changeProgress(progress: Float(elems[0].1.startTime / itemModels[currItemModelIndex].materialDuraion))
|
|
|
+ progressThumV.progress = elems[0].1.startTime
|
|
|
+ }
|
|
|
+ deleteRecordBtn.isHidden = false
|
|
|
+ recordBtn.isHidden = true
|
|
|
+ isStopAtRecordRange = elems.first!.0
|
|
|
|
|
|
- deleteRecordBtn.isHidden = true
|
|
|
- recordBtn.isHidden = false
|
|
|
- isStopAtRecordRange = -1
|
|
|
- BFLog(1, message: "停在了录音区间外 \(isStopAtRecordRange)")
|
|
|
- } else {
|
|
|
- if fabs(elems[0].1.startTime - currentAssetProgress.seconds) < 0.5 {
|
|
|
- BFLog(1, message: "吸附在录音开始")
|
|
|
-// changeWithDrawBtnLayout(true)
|
|
|
- changeProgress(progress: Float(elems[0].1.startTime / itemModels[currItemModelIndex].materialDuraion))
|
|
|
- progressThumV.progress = elems[0].1.startTime
|
|
|
+ BFLog(1, message: "停在了录音区间里 \(isStopAtRecordRange)")
|
|
|
}
|
|
|
+ }else{
|
|
|
deleteRecordBtn.isHidden = false
|
|
|
recordBtn.isHidden = true
|
|
|
- isStopAtRecordRange = elems.first!.0
|
|
|
|
|
|
+ isStopAtRecordRange = elems.first!.0
|
|
|
BFLog(1, message: "停在了录音区间里 \(isStopAtRecordRange)")
|
|
|
+
|
|
|
}
|
|
|
+
|
|
|
} else {
|
|
|
deleteRecordBtn.isHidden = true
|
|
|
recordBtn.isHidden = false
|
|
@@ -1136,6 +1147,8 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
self?.hadPrepareToPlayRecord = false
|
|
|
self?.currentPlayRecordIndex = -1
|
|
|
self?.assetPlayer?.volume = self?.noSpeakVolume ?? 0
|
|
|
+// self?.deleteRecordBtn.isHidden = true
|
|
|
+// self?.recordBtn.isHidden = false
|
|
|
didPlayToEndTime(recordedAudio, newItem)
|
|
|
}
|
|
|
avplayerTimeObserver?.invalidate()
|
|
@@ -1150,10 +1163,10 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
return
|
|
|
}
|
|
|
synced(currentPlayRecordIndex) { [weak self] in
|
|
|
- guard let self = self else {
|
|
|
+ guard let sself = self else {
|
|
|
return
|
|
|
}
|
|
|
- BFLog(1, message: "判断是否开始录音播放** hadPrepareToPlayRecord:\(hadPrepareToPlayRecord), currentPlayRecordIndex:\(currentPlayRecordIndex), isNormalPlaying :\(self.isNormalPlaying),\(recordPlayer?.currentItem?.duration.timescale ?? 0),\(CMTimeGetSeconds(currentT) >= recordedAudio.startTime),\(CMTimeGetSeconds(currentT) <= recordedAudio.endTime - 0.2)")
|
|
|
+ BFLog(1, message: "判断是否开始录音播放** hadPrepareToPlayRecord:\(hadPrepareToPlayRecord), currentPlayRecordIndex:\(currentPlayRecordIndex), isNormalPlaying :\(sself.isNormalPlaying),\(recordPlayer?.currentItem?.duration.timescale ?? 0),\(CMTimeGetSeconds(currentT) >= recordedAudio.startTime),\(CMTimeGetSeconds(currentT) <= recordedAudio.endTime - 0.2)")
|
|
|
|
|
|
if !hadPrepareToPlayRecord,
|
|
|
recordPlayer?.currentItem?.duration.timescale != 0,
|
|
@@ -1162,14 +1175,16 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
{
|
|
|
// 应当开始播放了
|
|
|
// 两个逻辑:如果在播,则跳过;如果暂停拖动到中间,则seek
|
|
|
- if currentPlayRecordIndex == -1, self.isNormalPlaying {
|
|
|
+ if currentPlayRecordIndex == -1, sself.isNormalPlaying {
|
|
|
let second = CMTimeGetSeconds(currentT) - recordedAudio.startTime
|
|
|
- self.assetPlayer?.volume = self.haveSpeakVolume
|
|
|
+ sself.assetPlayer?.volume = sself.haveSpeakVolume
|
|
|
|
|
|
- DispatchQueue.main.async { [weak self] in
|
|
|
+ DispatchQueue.main.async { [weak sself] in
|
|
|
self?.recordPlayer?.seek(to: CMTime(value: CMTimeValue(second * 1_000_000), timescale: 1_000_000), toleranceBefore: CMTime(value: 1, timescale: 1_000_000), toleranceAfter: CMTime(value: 1, timescale: 1_000_000), completionHandler: { [weak self] finished in
|
|
|
if finished, self?.isNormalPlaying ?? false {
|
|
|
self?.recordPlayer?.play()
|
|
|
+// self?.deleteRecordBtn.isHidden = false
|
|
|
+// self?.recordBtn.isHidden = true
|
|
|
BFLog(1, message: "录音开始播放 playing, \(second), \(CMTimeGetSeconds(self?.recordPlayer?.currentItem?.duration ?? .zero)), \(self?.recordPlayer?.currentItem?.currentTime().seconds ?? 0)")
|
|
|
}
|
|
|
})
|
|
@@ -1208,6 +1223,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
// 处理图片音频播放
|
|
|
imageRecordPlay()
|
|
|
}
|
|
|
+
|
|
|
+ deleteRecordBtn.isHidden = true
|
|
|
+ recordBtn.isHidden = false
|
|
|
}
|
|
|
|
|
|
func pause() {
|