如何使用 UIBezierPath 基于小数绘制圆弧

How to draw arc based on decimals using UIBezierPath

我画了一个圆,从 -pi/2 开始到 3(pi)/2 形成一个完整的圆。在它的顶部,我有一个圆弧,它根据它接收到的十进制值绕着圆圈。所以值 0.5 应该填满圆的一半,0.9 应该绕圆 90%,等等

我知道圆弧的起始角度与第一个圆相同(即 -pi/2),但是如何计算结束角度?

我们来举个例子。假设您的百分比系数是 0.5。一个完整的圆是 2*pi 弧度。现在乘以您的百分比因子:0.52*pi*0.5 弧度(恰好是 pi)。但是你想从 -pi/2 开始,所以添加:pi 加上 -pi/2pi/2。因此,您将从 -pi/2 开始并在 pi/2 结束。

现在让我们做0.9的例子。这是一样的:您将从 -pi/2 开始并在 2*pi*0.9 - pi/2 结束。

作为健全性检查,这是我实际 绘制 0.9 示例时使用这些数字得到的结果(这是 Swift 代码,但我不'认为这将证明是任何困难):

let b = UIBezierPath(arcCenter: CGPoint(x:100,y:100), radius: 50, 
                     startAngle: -.pi/2, endAngle: 2*(.pi)*0.9 - .pi/2, 
                     clockwise: true)

这是一张图表,您可以用它来做进一步的健全性检查(但要小心,因为他们选择让数字增长 counter-clockwise):

请记住,如果需要,您始终可以加减 2*pi 将相同的值从负值转换为正值,反之亦然。因此 -pi/2 和 3*pi/2 最终将你带到圆上的同一个地方。