Как на нарисованный круг добавить нарисованный мини-круг в UIBezierPath?
Цель:
Получить вот такую фигиру:
Что сделано:
class CreditReportScoringView: UIView {
let shapeLayer = CAShapeLayer()
let maxRadius: Float = 140.0
// test
var data = [
["value": 50,
"radius": 140.0,
"borderColor": CHColors.mandyViolet,
],
["value": 10,
"radius": 125.0,
"borderColor": CHColors.buttonBlue,
],
["value": 200,
"radius": 110.0,
"borderColor": CHColors.mandyGreen,
],
["value": 76,
"radius": 95.0,
"borderColor": CHColors.mandyYellow,
],
["value": 0,
"radius": 80.0,
"borderColor": CHColors.mandyRed,
],
]
override init(frame: CGRect = .zero) {
super.init(frame: frame)
setupView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupView() {
let center = self.center
for i in data {
let trackLayer = CAShapeLayer()
let radius = Float(i["radius"] as! Double)
let circularPath = UIBezierPath(arcCenter: center, radius: CGFloat(radius) , startAngle: .pi / 2, endAngle: .pi * 2.5, clockwise: true)
trackLayer.path = circularPath.cgPath
trackLayer.strokeColor = CHColors.zirconLightGray.cgColor
trackLayer.lineWidth = 1
trackLayer.fillColor = UIColor.clear.cgColor
trackLayer.lineCap = .round
self.layer.addSublayer(trackLayer)
let color = i["borderColor"] as! UIColor
shapeLayer.path = circularPath.cgPath
shapeLayer.strokeColor = color.cgColor
shapeLayer.lineWidth = 10
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.strokeEnd = 0
self.layer.addSublayer(shapeLayer)
setColor(withValue: 50)
}
}
private func setColor(withValue value: Int) {
let basicAnimation = CABasicAnimation(keyPath: "strokeEnd")
let floatStr = String(format: "%.1f", CGFloat(value / 2))
let floatValue = (floatStr as NSString).floatValue
let value = String(format: "%.1f", floatValue / 100)
let finalValue = (value as NSString).floatValue
basicAnimation.toValue = finalValue
basicAnimation.duration = 2
basicAnimation.fillMode = CAMediaTimingFillMode.forwards
basicAnimation.isRemovedOnCompletion = false
shapeLayer.add(basicAnimation, forKey: "urSoBasic")
}
}
В чем сложность:
Сложно заключается в добавление белых кружочках на сами круги
Можете посоветовать библиотеку для данной задачи?
