Blame view

HDFwear/Basic/View/StepCircleView.swift 3.04 KB
f2cf74c7   yangbin   1.0.20(4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
  //
  //  StepCircleView.swift
  //  Twear
  //
  //  Created by yangbin on 2022/1/6.
  //
  
  import UIKit
  
  class StepCircleView: UIView {
      
      private lazy var bgLayer: CAShapeLayer = CAShapeLayer()
      // 延迟初始化进度条层采用 stroke 来绘制边框
      private lazy var progressLayer: CAShapeLayer = CAShapeLayer()
      
      var value: Int = 0 {
          didSet {
              progressLayer.strokeEnd = CGFloat(value)/100
          }
      }
      
      @IBOutlet weak var stepLabel: UILabel!
      
      @IBOutlet weak var locLabel1: UILabel!
      @IBOutlet weak var locLabel2: UILabel!
      
      override init(frame: CGRect) {
          super.init(frame: frame)
          initFromNib()
          setupUI()
      }
      
      
      required init?(coder: NSCoder) {
          super.init(coder: coder)
          initFromNib()
          setupUI()
      }
      override class func awakeFromNib() {
          super.awakeFromNib()
         
      }
      
      private func setupUI() {
          locLabel1.text = LocString("步数")
e1017215   daifengyi   feat:home page UI
46
          locLabel2.text = LocString("")
f2cf74c7   yangbin   1.0.20(4)
47
48
49
50
          // 0.25 透明度的白色背景
          bgLayer.fillColor = nil
          bgLayer.strokeColor = LineColor.cgColor
          bgLayer.lineWidth = 10
0e862bb7   daifengyi   feat:step circle UI
51
          bgLayer.lineCap = .round
f2cf74c7   yangbin   1.0.20(4)
52
53
54
55
56
57
58
59
60
61
62
          layer.addSublayer(bgLayer)
          
          // 边框全白边框宽度为 4
  //        progressLayer = CAShapeLayer()
          progressLayer.fillColor = nil
          progressLayer.strokeColor = UIColor.rgbColorFromHex(0x1DDCC5).cgColor
          progressLayer.lineWidth = 10
          layer.addSublayer(progressLayer)
          
          
          let radius = bounds.height / 2 - 5
0e862bb7   daifengyi   feat:step circle UI
63
          let end = CGFloat(Double.pi * 2) + CGFloat(Double.pi / 2 * 0.3)
f2cf74c7   yangbin   1.0.20(4)
64
          bgLayer.path = UIBezierPath(arcCenter: CGPoint(rect: bounds), radius: radius,
0e862bb7   daifengyi   feat:step circle UI
65
                                      startAngle: CGFloat(Double.pi / 2 * 1.7), endAngle: end,
f2cf74c7   yangbin   1.0.20(4)
66
67
68
69
70
71
72
73
                                      clockwise: true).cgPath
          
  //        = progressPath.cgPath
          // 设置 start  12点钟方向开始默认是3点钟方向
          // end = 360 * progress - start
          // 设置为 顺时针 方向
          
          let progressPath = UIBezierPath(arcCenter: CGPoint(rect: bounds), radius: radius,
0e862bb7   daifengyi   feat:step circle UI
74
                                            startAngle: CGFloat(Double.pi / 2 * 1.7), endAngle: end,
f2cf74c7   yangbin   1.0.20(4)
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
                                            clockwise: true)
          progressLayer.lineCap = .round
          progressLayer.path = progressPath.cgPath
          progressLayer.strokeEnd = 0
      }
      
      private func initFromNib() {
          if let view = UINib(nibName: "StepCircleView", bundle: Bundle(for: type(of: self))).instantiate(withOwner: self, options: nil).first as? UIView {
              view.frame = bounds
              self.addSubview(view)
          }
      }
      
      override func layoutSubviews() {
          refreshUI()
      }
      
      private func refreshUI() {
  
          
      }
      /*
      // Only override draw() if you perform custom drawing.
      // An empty implementation adversely affects performance during animation.
      override func draw(_ rect: CGRect) {
          // Drawing code
      }
      */
  
  }