| 
					
				 | 
			
			
				@@ -0,0 +1,91 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//  BFSlider.swift 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//  BFFramework 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//  Created by ak on 2021/8/4. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//  功能:自定义 UISlider 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import Foundation 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+class BFUISlider: UISlider { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //slider的value文本 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var valueText:String?{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        didSet { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            valueLabel.text = valueText 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            valueLabel.sizeToFit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let trackRect = convert(bounds, to: nil) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let thumbRect = thumbRect(forBounds: bounds, trackRect: trackRect, value: value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            valueLabel.center = CGPoint.init(x: (thumbRect.origin.x - trackRect.origin.x + thumbRect.size.width / 2), y: -self.frame.size.height) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            CGPointMake((thumbRect.origin.x - trackRect.origin.x + thumbRect.size.width / 2), -self.frame.size.height); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            [super trackRectForBounds:bounds]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//           return CGRectMake(bounds.origin.x, bounds.origin.y + (bounds.size.height - 3.0) / 2, bounds.size.width, 3.0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    override var value: Float{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        didSet { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            sliderValueChanged(sender: self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //slider的value字体 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var valueFont:UIFont? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //slider的value文本颜色 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    var valueTextColor:UIColor? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    lazy var valueLabel:UILabel = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let valueLabel = UILabel.init() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        valueLabel.text = "0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        valueLabel.textColor = valueTextColor != nil ? valueTextColor : self.thumbTintColor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        valueLabel.font = valueFont != nil ? valueFont : UIFont.systemFont(ofSize: 14); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        valueLabel.textAlignment = .center 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return valueLabel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    override init(frame: CGRect) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super.init(frame: frame) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addTarget(self, action: #selector(sliderTouchDown(sender:)), for: .touchDown) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addTarget(self, action: #selector(sliderValueChanged(sender:)), for: .valueChanged) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addTarget(self, action: #selector(sliderTouchUpInside(sender:)), for: .touchUpInside) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    required init?(coder: NSCoder) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        fatalError("init(coder:) has not been implemented") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    override func layoutSubviews() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super.layoutSubviews() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        addSubview(valueLabel) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sliderValueChanged(sender: self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    override func setValue(_ value: Float, animated: Bool) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super.setValue(value, animated: animated) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        sliderValueChanged(sender: self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //重写方法-返回进度条的bounds-修改进度条的高度 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    override func trackRect(forBounds bounds: CGRect) -> CGRect { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        let bounds = super.trackRect(forBounds: bounds) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return CGRect.init(origin: CGPoint.init(x: bounds.origin.x, y: bounds.origin.y + (bounds.size.height - 3.0) / 2 ), size: CGSize.init(width:  bounds.size.width, height: 3)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @objc func sliderTouchDown(sender: BFUISlider) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @objc func sliderValueChanged(sender: BFUISlider) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        valueText = String(format: "%.1fx", sender.value) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @objc func sliderTouchUpInside(sender: BFUISlider) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |