ET
Size: a a a
ET
ET
UIKit
class CircleGraphView: UIView {
var endArc:CGFloat = 0.0 { // in range of 0.0 to 1.0
didSet{
setNeedsDisplay()
}
}
var arcWidth:CGFloat = 30.0
var arcColor = colorLiteral(red: 0, green: 0.4943938851, blue: 0.9980103374, alpha: 1)
var arcBackgroundColor = colorLiteral(red: 0.9520987868, green: 0.9522580504, blue: 0.952077806, alpha: 1)
func drawMe() {
//Important constants for circle
let fullCircle = CGFloat(2.0 * Double.pi)
let start:CGFloat = -0.25 * fullCircle
let end:CGFloat = endArc * fullCircle + start
//define the radius by the smallest side of the view
let center =
self.center
let bounds =
self.bounds
let frame =
self.frame
var radius:CGFloat = 0.0
if bounds.width > bounds.height{
radius = (bounds.height - arcWidth) / 2.0
}
else{
radius = (bounds.width - arcWidth) / 2.0
}
//светло-серый фон
let backPath = UIBezierPath(arcCenter: CGPoint(x: center.x, y: center.y), radius: radius, startAngle: start, endAngle: start + fullCircle, clockwise:
true)
print (backPath)
let backLayer = CAShapeLayer()
backLayer.bounds =
self.bounds
backLayer.path = backPath.cgPath
backLayer.lineWidth = arcWidth
backLayer.strokeColor = arcBackgroundColor.cgColor
backLayer.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(backLayer)
//синий круг
let fillPath = UIBezierPath(arcCenter: CGPoint(x: center.x, y: center.y), radius: radius, startAngle: start, endAngle: end, clockwise:
true)
print (fillPath)
let fillLayer = CAShapeLayer()
fillLayer.bounds =
self.bounds
fillLayer.path = fillPath.cgPath
fillLayer.lineWidth = arcWidth * 0.8
fillLayer.lineCap = .round
fillLayer.strokeColor = arcColor.cgColor
fillLayer.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(fillLayer)
}
}
В
В
UIKit
class CircleGraphView: UIView {
var endArc:CGFloat = 0.0 { // in range of 0.0 to 1.0
didSet{
setNeedsDisplay()
}
}
var arcWidth:CGFloat = 30.0
var arcColor = colorLiteral(red: 0, green: 0.4943938851, blue: 0.9980103374, alpha: 1)
var arcBackgroundColor = colorLiteral(red: 0.9520987868, green: 0.9522580504, blue: 0.952077806, alpha: 1)
func drawMe() {
//Important constants for circle
let fullCircle = CGFloat(2.0 * Double.pi)
let start:CGFloat = -0.25 * fullCircle
let end:CGFloat = endArc * fullCircle + start
//define the radius by the smallest side of the view
let center =
self.center
let bounds =
self.bounds
let frame =
self.frame
var radius:CGFloat = 0.0
if bounds.width > bounds.height{
radius = (bounds.height - arcWidth) / 2.0
}
else{
radius = (bounds.width - arcWidth) / 2.0
}
//светло-серый фон
let backPath = UIBezierPath(arcCenter: CGPoint(x: center.x, y: center.y), radius: radius, startAngle: start, endAngle: start + fullCircle, clockwise:
true)
print (backPath)
let backLayer = CAShapeLayer()
backLayer.bounds =
self.bounds
backLayer.path = backPath.cgPath
backLayer.lineWidth = arcWidth
backLayer.strokeColor = arcBackgroundColor.cgColor
backLayer.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(backLayer)
//синий круг
let fillPath = UIBezierPath(arcCenter: CGPoint(x: center.x, y: center.y), radius: radius, startAngle: start, endAngle: end, clockwise:
true)
print (fillPath)
let fillLayer = CAShapeLayer()
fillLayer.bounds =
self.bounds
fillLayer.path = fillPath.cgPath
fillLayer.lineWidth = arcWidth * 0.8
fillLayer.lineCap = .round
fillLayer.strokeColor = arcColor.cgColor
fillLayer.fillColor = UIColor.clear.cgColor
self.layer.addSublayer(fillLayer)
}
}
ET
В
ET
В
AS
A
P
I
RM