Я пытаюсь нарисовать круговую диаграмму, которая будет состоять из сегментов одинакового размера, каждый с другим цветом. Я основывая свой код от этого SO: Draw a circular segment progress in SWIFTСоздайте круг с многоцветными сегментами в Core Graphics
let circlePath = UIBezierPath(ovalInRect: CGRect(x: 200, y: 200, width: 150, height: 150))
var segments: [CAShapeLayer] = []
let segmentAngle: CGFloat = 1.0/CGFloat(totalSegments)
for var i = 0; i < totalSegments; i++ {
let circleLayer = CAShapeLayer()
circleLayer.path = circlePath.CGPath
// start angle is number of segments * the segment angle
circleLayer.strokeStart = segmentAngle * CGFloat(i)
//create a gap to show segments
let gapSize: CGFloat = 0.008
circleLayer.strokeEnd = circleLayer.strokeStart + segmentAngle - gapSize
circleLayer.lineWidth = 10
circleLayer.strokeColor = UIColor(red:0, green:0.004, blue:0.549, alpha:1).CGColor
circleLayer.fillColor = UIColor.redColor().CGColor
// add the segment to the segments array and to the view
segments.insert(circleLayer, atIndex: i)
view.layer.addSublayer(segments[i])
}
Но с помощью этого я хотел бы сделать это так, я могу окрасить каждый сегмент на основе значения индекса я в течение цикла. Первоначально я просто тестировал с нечетным или четным, но обнаружил, что заполняющая часть заполнит весь круг последним используемым цветом.
Я подозреваю, что это потому, что заполняющий цвет заполняет весь круг, хотя ход имеет конечный старт и конец. Как я могу создать такой же эффект, но включить отдельный цвет заливки для каждого сегмента?
на боковой ноте с использованием линии Ширина с методом дуги создает чрезвычайно привлекательный круг! – Dan