Browse Source

1,发现开始划动回调 2,时间 UI 调整

jsonwang 3 years ago
parent
commit
06bc68974c
1 changed files with 29 additions and 14 deletions
  1. 29 14
      BFFramework/Classes/Stuckpoint/View/PQStuckPointCuttingView.swift

+ 29 - 14
BFFramework/Classes/Stuckpoint/View/PQStuckPointCuttingView.swift

@@ -70,6 +70,8 @@ class PQStuckPointCuttingView: UIView {
     var videoProgressDidChanged: ((_ progress: CGFloat) -> Void)?
     /// 拖缀结束的回调 type - 1-拖动左边裁剪结束 2--拖动右边裁剪结束 3-进度条拖动结束 4-滑动结束
     var videoDidEndDragging: ((_ type: Int, _ startTime: CGFloat, _ endTime: CGFloat, _ progress: CGFloat) -> Void)?
+    // 开始划动
+    var videoDidBeginDrag: (() -> Void)?
 
     // 选择区内的线个数
     var wavSelectCount: Int = 0
@@ -187,16 +189,16 @@ class PQStuckPointCuttingView: UIView {
     func addData() {
         // 1,选择区内的线个数
         wavSelectCount = Int(cropViewWidth / (frequencyWidth + frequencyMargin))
-        // 2,一共绘制的竖线个数
-        wavTotalCount = Int(videoDuration * CGFloat(wavSelectCount) / CGFloat(stuckPointEndTime - stuckPointStartTime))
-
-        // 竖线一个间隔代表多少 S 是动态的
+     
+        // 2竖线一个间隔代表多少 S 是动态的
         oneMarginTime = (stuckPointEndTime - stuckPointStartTime) / CGFloat(wavSelectCount)
+        
+        // 3,一共绘制的竖线个数
+        wavTotalCount = Int(videoDuration / oneMarginTime)
+
         timeRange = oneMarginTime * 10
         // 显示时间 label 的个数 , -1 不够整倍数就不显示时间了
-        let timeLabelCount = Int(videoDuration / timeRange) - 1
-
-        //
+        let timeLabelCount = Int(wavTotalCount / 10)
         contentWidth = CGFloat(wavTotalCount) * (frequencyWidth + frequencyMargin) + margin * 2 + timeLineWidth / 2
         if contentWidth < scrollView.frame.width {
             contentWidth = scrollView.frame.width
@@ -206,7 +208,7 @@ class PQStuckPointCuttingView: UIView {
         
         for index in 0 ... timeLabelCount {
             scrollView.viewWithTag(100 + index)?.removeFromSuperview()
-            let titleLab = UILabel(frame: CGRect(x: CGFloat(index) * (timeLineWidth + timeLineMargin) + margin, y: rateView.frame.maxY, width: timeLineWidth, height: 30))
+            let titleLab = UILabel(frame: CGRect(x: CGFloat(index) *  (frequencyWidth + frequencyMargin) * 10 + margin - timeLineWidth / 2, y: rateView.frame.maxY, width: timeLineWidth, height: 30))
             titleLab.font = UIFont.systemFont(ofSize: 11)
             titleLab.textAlignment = .center
             titleLab.numberOfLines = 1
@@ -324,7 +326,7 @@ class PQStuckPointCuttingView: UIView {
         let lastLine:UIView = scrollView.viewWithTag(100 +  Int(videoDuration / timeRange) - 1) ?? UIView.init()
         //移动后的开始时间
         let startTime =  videoDuration / lastLine.frame.maxX * scrollView.contentOffset.x
-        BFLog(message: "拖拽结束 - 回调\(scrollView.contentOffset)  \(scrollView.contentSize) 开始时间为:\(startTime)")
+        BFLog(message: "拖拽结束 - 回调\(scrollView.contentOffset)  \(scrollView.contentSize) 开始时间为:\(startTime) 结束时间为:\(startTime + CGFloat(stuckPointEndTime - stuckPointStartTime))")
         if(videoDidEndDragging != nil){
             videoDidEndDragging!(1,startTime,startTime + CGFloat(stuckPointEndTime - stuckPointStartTime),0)
         }
@@ -342,17 +344,30 @@ class PQStuckPointCuttingView: UIView {
 /// scrollView滑动代理
 extension PQStuckPointCuttingView: UIScrollViewDelegate {
     func scrollViewDidScroll(_: UIScrollView) {}
-
+ 
+    func scrollViewWillBeginDragging(_ :UIScrollView){
+        if(videoDidBeginDrag != nil){
+            videoDidBeginDrag!()
+        }
+        
+    }
+    
     func scrollViewDidEndDecelerating(_: UIScrollView) {
-        moveEnd()
+        if !scrollView.isDragging, !scrollView.isDecelerating {
+            moveEnd()
+        }
+       
     }
-    func scrollViewDidEndDragging(_:UIScrollView,willDecelerate:Bool){
-        moveEnd()
+    func scrollViewDidEndDragging(_:UIScrollView,willDecelerate decelerate:Bool){
+        if !decelerate, !scrollView.isDragging, !scrollView.isDecelerating {
+            moveEnd()
+        }
+       
     }
     
     func scrollViewDidEndScrollingAnimation(_: UIScrollView) {
         BFLog(message: "scrollViewDidEndScrollingAnimation")
-   
+        
         
     }
 }