| 
					
				 | 
			
			
				@@ -11,10 +11,11 @@ import UIKit 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 class PQStuckPointCuttingView: UIView { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 视频时长 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     var videoDuration: CGFloat = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var lastVideoDuration:CGFloat = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 卡点开始时间 默认 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private var stuckPointStartTime: CGFloat = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var stuckPointStartTime: CGFloat = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 卡点结束时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private var stuckPointEndTime: CGFloat = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var stuckPointEndTime: CGFloat = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 裁剪开始时间 默认 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private var cutStartTime: CGFloat = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -162,6 +163,9 @@ class PQStuckPointCuttingView: UIView { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     func updateEndTime(startTime: CGFloat, endTime: CGFloat) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         stuckPointStartTime = startTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         stuckPointEndTime = endTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        tatalTimeLabel.text = "\(Float64(stuckPointEndTime - stuckPointStartTime).formatDurationToHMS())" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BFLog(message: "推荐开始\(stuckPointStartTime) 结束\(stuckPointEndTime) 时长为:\(stuckPointEndTime - stuckPointStartTime)  音乐总时长为:\(videoDuration)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         backgroundColor = PQBFConfig.shared.styleBackGroundColor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         addSubview(scrollView) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -180,7 +184,7 @@ class PQStuckPointCuttingView: UIView { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             make.right.equalTo(videoCropView.snp_right).offset(-6) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        tatalTimeLabel.text = "\(Float64(stuckPointEndTime - stuckPointStartTime).formatDurationToHMS())" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+       
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     func addData() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -256,16 +260,20 @@ class PQStuckPointCuttingView: UIView { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// progress <#progress description#> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     func updateProgress(progress: CGFloat) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(progress < 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(progress <= 0 || lineLayerArray.count == 0){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BFLog(message: "progress is error ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let startIndex = stuckPointStartTime / oneMarginTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         BFLog(message: "startIndex is\(startIndex) stuckPointStartTime is: \(stuckPointStartTime)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let selectIndex = Int(startIndex + progress * CGFloat(wavSelectCount)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let drawLayer:CAShapeLayer = lineLayerArray[selectIndex] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BFLog(message: "progress is \(progress) i \(selectIndex) 命中的位置:\(CGFloat(selectIndex) * oneMarginTime)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        drawLayer.strokeColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue).cgColor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        drawLayer.setNeedsDisplay() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(selectIndex < lineLayerArray.count){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let drawLayer:CAShapeLayer = lineLayerArray[selectIndex] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BFLog(message: "progress is \(progress) i \(selectIndex) 命中的位置:\(CGFloat(selectIndex) * oneMarginTime)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            drawLayer.strokeColor = UIColor.hexColor(hexadecimal: PQBFConfig.shared.styleColor.rawValue).cgColor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            drawLayer.setNeedsDisplay() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if(progress >= 0.99){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             BFLog(message: "播放完成 重新更新 UI ") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -381,13 +389,20 @@ extension PQStuckPointCuttingView: UIScrollViewDelegate { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     func scrollViewDidEndDecelerating(_: UIScrollView) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if !scrollView.isDragging, !scrollView.isDecelerating { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            moveEnd() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2) { [weak self] in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self?.moveEnd() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     func scrollViewDidEndDragging(_:UIScrollView,willDecelerate decelerate:Bool){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if !decelerate, !scrollView.isDragging, !scrollView.isDecelerating { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            moveEnd() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2) { [weak self] in 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                self?.moveEnd() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 |