我正在尝试绘制一个饼图,它将由相同大小的段构成,每个段都具有不同的颜色。我立足我的代码关闭此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])
}
但是使用这个我想让它,所以我可以颜色基于索引值i每个段的for循环。最初我只是用奇数或偶数进行测试,但发现填充部分会用最后使用的颜色填充整个圆。
我怀疑这是因为填充颜色填充整个圆圈,即使笔画有一个有限的开始和结束。我怎样才能创建相同的效果,但为每个片段启用单独的填充颜色?
在使用弧线方法使用lineWidth的侧面注释中创建了一个非常光滑的外观圆圈! – Dan