Forráskód Böngészése

录音指示条优化,视频插入不后移而是覆盖

胡志强 3 éve
szülő
commit
c57ea08a7e

+ 5 - 4
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -1160,7 +1160,9 @@ public class BFRecordScreenController: BFBaseViewController {
                     wself.resetCurrentProgress()
                 }
 
-                wself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
+                if wself.currMediaType == .Video {
+                    wself.currentPlayRecordIndex = -3 // 刚录音完,不需要播放录音
+                }
                 BFLog(3, message: "重置播放index-\(#function) = \(wself.currentPlayRecordIndex)")
                 recorderManager?.voiceModel = nil
                 
@@ -1246,7 +1248,6 @@ public class BFRecordScreenController: BFBaseViewController {
                 }
             }
             
-            BFLog(1, message: "test:\(findShowSubtitle?.text ?? "none")")
             if findShowSubtitle != nil, subtitleLabel.text != findShowSubtitle!.text {
                 subtitleLabel.text = findShowSubtitle!.text
                 setSubtitleStyle(settingModel: subtitleSettingView.subtitle.setting)
@@ -2374,7 +2375,7 @@ public class BFRecordScreenController: BFBaseViewController {
             DispatchQueue.main.async { [weak self] in
                 guard let wself = self else { return }
                 
-                wself.indirectionView?.setProgress(start: startTime, progress: max(0, progress))
+                wself.indirectionView?.setProgress(start: startTime, progress: max(0, progress), isInsert:wself.currMediaType == .Image)
             }
         }
     }
@@ -2486,7 +2487,7 @@ public class BFRecordScreenController: BFBaseViewController {
         if isRecording, currMediaType == .Image {
             let startTime = recorderManager?.voiceModel?.startCMTime ?? .zero
             // 使用播放器的进度来画线,因为进度是跟着播放器来了
-            indirectionView?.setProgress(start: startTime, progress: progress)
+            indirectionView?.setProgress(start: startTime, progress: progress, isInsert: true)
         }
         if currMediaType == .Image {
             imageRecordProgress(isRecord: true, progress: progress)

+ 30 - 11
BFRecordScreenKit/Classes/RecordScreen/View/BFIndirectionProgressView.swift

@@ -82,23 +82,38 @@ class BFIndirectionProgressView: UIView {
     ///   - _:
     ///   - start: 开始录制的时间
     ///   - progress: 当前录制时长
-    func setProgress(start: CMTime = .zero, progress: Float64) {
+    func setProgress(start: CMTime = .zero, progress: Float64, isInsert:Bool = false) {
         if start.seconds * percenWidth >= frame.width {
             frame.size.width = (superview as? UIScrollView)?.contentSize.width ?? 0
         }
 
         detectionAndCreateItem(start: start, progress: progress)
-        if let currentItem = currentItem {
-            let oldwidth = currentItem.frame.width
-            currentItem.frame.size.width = progress < 0 ? 0 : progress * percenWidth
-            BFLog(message: "当前view:\(String(describing: currentItem))")
-            
-            // 插入后后边的视图后移
-            subviews.forEach { subv in
-                if currentItem.frame.maxX < subv.frame.maxX {
-                    subv.frame = subv.frame.offsetBy(dx: (currentItem.width) - oldwidth, dy: 0)
+
+        if isInsert {
+            if let currentItem = currentItem {
+                let oldwidth = currentItem.frame.width
+                currentItem.frame.size.width = progress < 0 ? 0 : progress * percenWidth
+                BFLog(message: "当前view:\(String(describing: currentItem))")
+                
+                // 插入后后边的视图后移
+                subviews.forEach { subv in
+                    if currentItem.frame.maxX < subv.frame.maxX {
+                        subv.frame = subv.frame.offsetBy(dx: (currentItem.width) - oldwidth, dy: 0)
+                    }
                 }
             }
+        }else {
+            // 视频录制
+            currentItem?.frame.size.width = progress < 0 ? 0 : progress * percenWidth
+            BFLog(message: "当前view:\(String(describing: currentItem))")
+            let vc = subviews.first { [weak self] sub in
+                (self?.currentItem?.frame.minX ?? 0) < sub.frame.minX && sub.frame.minX < (self?.currentItem?.frame.maxX ?? 0)
+            }
+            if vc != nil {
+                deletedView = vc
+                vc?.removeFromSuperview()
+                BFLog(message: "添加覆盖view-添加:deletedView = \(String(describing: deletedView))")
+            }
         }
     }
 
@@ -108,7 +123,7 @@ class BFIndirectionProgressView: UIView {
         BFLog(message: "检测并创建item:\(start)")
         if currentItem == nil {
             deletedView = nil
-//            subviews[curr]
+
             currentItem = createItemView(minX: start.seconds * percenWidth)
             if subviews.count > 1 {
                 let vvs = subviews.sorted { v1, v2 in
@@ -162,6 +177,10 @@ class BFIndirectionProgressView: UIView {
     func resetCurrentItem(start: CGFloat, end: CGFloat) {
         currentItem?.frame.origin.x = start * percenWidth
         currentItem?.frame.size.width = (end - start) * percenWidth
+
+        if subviews.max(by: {$0.rightX < $1.rightX}) == currentItem {
+            (currentItem as? BFThumImageView)?.isHiddenBord = true
+        }
         currentItem = nil
         BFLog(message: "重置currentItem:\(start)")
     }