Какую единицу использует Swift для углов?
Я пишу код для рисования круговых диаграмм, и, читая пример кода, запутался в том, как измеряются углы в Swift.
В первом посте, который я прочитал, Swift, похоже, использует радианы:
CGContextAddArc(context, origo.x, origo.y, radius, floatPi * 3 / 2, floatPi * 3 / 2 + floatPi * 2 * percent, 0)
Во втором посте Swift, похоже, определяет углы в диапазоне от 0 до 1:
let circlePath = UIBezierPath(ovalInRect: CGRect(x: 200, y: 200, width: 150, height: 150))
var segments: [CAShapeLayer] = []
let segmentAngle: CGFloat = (360 * 0.125) / 360
for var i = 0; i < 8; i++ {
let circleLayer = CAShapeLayer()
circleLayer.path = circlePath.CGPath
// start angle is number of segments * the segment angle
circleLayer.strokeStart = segmentAngle * CGFloat(i)
// end angle is the start plus one segment, minus a little to make a gap
// you'll have to play with this value to get it to look right at the size you need
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.clearColor().CGColor
// add the segment to the segments array and to the view
segments.insert(circleLayer, atIndex: i)
view.layer.addSublayer(segments[i])
}
Итак, как Swift измеряет углы?
Спасибо
1 ответ
Swift не имеет абсолютно никакого отношения к единице угла, это просто Float
/Double
к этому. Именно функции платформы Core Graphics определяют, какую угловую единицу они ожидают. Просто прочитайте документы по рассматриваемым функциям.
Из документов CGContextAddArc:
startAngle: угол к начальной точке дуги, измеренный в радианах от положительной оси x.
endAngle: Угол до конечной точки дуги, измеренный в радианах от положительной оси x.
Так же strokeStart
а также strokeEnd
свойства CAShapeLayer
Скажите, какая часть данного пути должна быть нарисована, это не угол. Просто прочитайте документы в следующий раз.