Browse Source

分割线隐藏逻辑

胡志强 3 years ago
parent
commit
22bb181602

+ 1 - 0
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenBaseManager.swift

@@ -24,6 +24,7 @@ class BFRecordScreenBaseManager : NSObject{
     var recordItem : BFRecordItemModel?{
         didSet{
             progressThumV?.recordItem = recordItem
+            progressThumV?.progress = .zero
         }
     }
     

+ 0 - 6
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenCameraManager.swift

@@ -318,12 +318,6 @@ class BFRecordScreenCameraManager : BFRecordScreenBaseManager{
         recordFinishedResult = isSuccess
         gropQueue.leave()
     }
-    
-    func dealCamera(_ isSuccess: Bool) {
-        
-        
-    }
-    
 
     override func deleteRecord(at: CMTime) {
         if let videoS = recordItem?.videoStickers.enumerated().first(where: { mod in

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

@@ -166,7 +166,6 @@ public class BFRecordScreenController: BFBaseViewController {
             rscurrentManager.progreddL = progreddL
             rscurrentManager.recordPlayer = recordPlayer
             rscurrentManager.progressThumV = progressThumV
-            progressThumV.recordItem = itemModel
             rscurrentManager.recordItem = itemModel
             rscurrentManager.resetEnv()
             if currMediaType == .Video {
@@ -1868,7 +1867,6 @@ public class BFRecordScreenController: BFBaseViewController {
                 changeWithDrawBtnLayout(event.type)
             } else {
                 changeWithDrawBtnLayout(0)
-                withDrawBtn.isEnabled = false
             }
             searchStopAtRecordRange()
             let itemModel = itemModels[currItemModelIndex]
@@ -1880,11 +1878,7 @@ public class BFRecordScreenController: BFBaseViewController {
                     rscmanager.cameraProgressV?.progressView.contentOffset = CGPoint(x: currentAssetProgress.seconds * 70.0 / 5.0, y: 0)
                 }
             }
-            // 如果是图片需重置播放按钮
-            if itemModel.mediaType != .Video {
-                playBtn.isSelected = itemModels[currItemModelIndex].voiceStickers.count <= 0
-                playBtn.isHidden = playBtn.isSelected
-            }
+
         }
     }
     
@@ -2390,11 +2384,15 @@ public class BFRecordScreenController: BFBaseViewController {
 
     // 撤销按钮修改title,重绘
     func changeWithDrawBtnLayout(_ type: Int) {
+        withDrawBtn.isEnabled = true
         switch type {
         case 3:
             withDrawBtn.setTitle("record_recover".BFLocale, for: .normal)
         case 2:
             withDrawBtn.setTitle("record_undo".BFLocale, for: .normal)
+        case 0:
+            withDrawBtn.isEnabled = false
+            fallthrough
         default:
             withDrawBtn.setTitle("record_back".BFLocale, for: .normal)
         }

+ 22 - 3
BFRecordScreenKit/Classes/RecordScreen/View/BFIndirectionProgressView.swift

@@ -62,8 +62,17 @@ class BFIndirectionProgressView: UIView {
             vv.removeFromSuperview()
         }
         
+        var lastM : PQVoiceModel?
+        var lastv : BFThumImageView?
         items?.forEach { [weak self] model in
-            _ = createItemView(minX: model.startCMTime.seconds * CGFloat(self?.percenWidth ?? 0), width: (model.endCMTime.seconds - model.startCMTime.seconds) * CGFloat(self?.percenWidth ?? 0))
+            
+            let v = createItemView(minX: model.startCMTime.seconds * CGFloat(self?.percenWidth ?? 0), width: (model.endCMTime.seconds - model.startCMTime.seconds) * CGFloat(self?.percenWidth ?? 0))
+//            BFLog(1, message: "equ:\((lastM?.endCMTime ?? .zero).seconds), \(model.startCMTime.seconds), \(CMTimeCompare(lastM?.endCMTime ?? .zero, model.startCMTime) < 0 ? "==" : "!=")")
+            if let lastM = lastM, CMTimeCompare(lastM.endCMTime, model.startCMTime) < 0 {
+                lastv?.isHiddenBord = true
+            }
+            lastM = model
+            lastv = v
         }
         (subviews.last as? BFThumImageView)?.isHiddenBord = true
     }
@@ -77,7 +86,7 @@ class BFIndirectionProgressView: UIView {
         if start.seconds * percenWidth >= frame.width {
             frame.size.width = (superview as? UIScrollView)?.contentSize.width ?? 0
         }
-        BFLog(1, message: "\(frame.size.width)")
+
         detectionAndCreateItem(start: start, progress: progress)
         if let currentItem = currentItem {
             let oldwidth = currentItem.frame.width
@@ -100,7 +109,17 @@ class BFIndirectionProgressView: UIView {
         if currentItem == nil {
             deletedView = nil
 //            subviews[curr]
-            currentItem = detectionItem(start: start, progress: progress)
+            currentItem = createItemView(minX: start.seconds * percenWidth)
+            if subviews.count > 1 {
+                let vvs = subviews.sorted { v1, v2 in
+                    v1.rightX < v2.rightX
+                }
+                if let lastv = vvs.last(where: { vv in
+                    (vv != currentItem) && abs(vv.rightX - currentItem!.x) < 0.01
+                }) as? BFThumImageView {
+                    lastv.isHiddenBord = false
+                }
+            }
         }
     }
 

+ 1 - 0
BFRecordScreenKit/Classes/RecordScreen/View/BFThumImageView.swift

@@ -9,6 +9,7 @@ import Foundation
 import UIKit
 
 class BFThumImageView: UIView {
+    
     var isHiddenBord = false{
         didSet{
             if let v = self.viewWithTag(12333){

+ 0 - 1
BFRecordScreenKit/Classes/RecordScreen/View/ProgressView/BFCameraProgressView.swift

@@ -94,7 +94,6 @@ class BFCameraProgressView: BFProgressBaseView {
                 wself.imageViews.insert(iv, at: ind)
             }
             
-
             wself.progressView.setNeedsLayout()
             wself.progressView.layoutIfNeeded()
             

+ 3 - 2
BFRecordScreenKit/Classes/RecordScreen/View/ProgressView/BFVideoThumbProgressView.swift

@@ -16,7 +16,7 @@ class BFVideoThumbProgressView: BFProgressBaseView {
     override var recordItem: BFRecordItemModel? {
         didSet {
             // 指针回归
-            progress = .zero
+//            progress = .zero
             
             if recordItem?.mediaType == .Video {
                 DispatchQueue.main.async {[weak self] in
@@ -162,7 +162,8 @@ class BFVideoThumbProgressView: BFProgressBaseView {
             addThumbImages(images: [UIImage]())
             return
         }
-        addThumbImages(images: Array(repeating: image, count: 10))
+        let count = (recordItem?.materialDuraion.seconds ?? 0) / 2.0 + (cScreenWidth / thumbImageWidth)
+        addThumbImages(images: Array(repeating: image, count: max(10, Int(count + 4))))
     }
 
     /// 添加缩略图