我是 iPhone 新手。我想在里面画一个不同颜色的圆圈。并且所有颜色应覆盖相同的区域。就像我想在里面有 10 种不同的颜色。然后每种颜色应覆盖圆圈的 1/10 区域。我不是想在这里画饼图。也不要尝试使用 10 种不同的颜色。只需要 10 个相等的圆形部分,每个部分都可以填充颜色。我正在尝试建造一个幸运轮。这样较小的轮子在较大的轮子上方。然后我想分别拖动它们。在Core Animation的帮助下也可以做到这一点吗?
2 回答
模棱两可的问题。如果您绘制一个具有 10 个相等区域的饼图,那么每个将覆盖该区域的 1/10,从而满足您的要求,不是吗?
一个圆圈有 360°,所以除以 10,每个楔形应该有 36°。现在你只需要画 10 个楔子,这个页面应该可以帮助你:
http://www.raywenderlich.com/2106/core-graphics-101-arcs-and-paths
既然你说不要馅饼片,那你要不要用同心环代替?
你确定你想要相等的面积吗?这将使环的厚度不同。最里面的环会相当厚,向外的每个环都会变薄。更薄,在外圈上。
我们的眼睛习惯了靶心形,每个环的厚度相同。
在任何情况下,您都应该查看 CAShapeLayer 对象。您可以为每个环创建一个形状图层,定义一个包含 2 个圆圈的闭合路径。有一种叫做“缠绕规则”的东西可以让你确定当路径重叠时会发生什么。我认为您需要奇偶路径缠绕(kCAFillRuleEvenOdd)。
要使环的面积相等,您可以这样做:
首先计算整个圆的面积。除以环数。这是每个环所需的区域让我们称该区域为“a”。从中心开始。该环(圆)的半径将为 sqrt(pi/a)。
For each following ring you'll need to calculate the thickness of the ring based on the area of the outer circle minus the area of the inner circle that makes up the ring. You'll need to write an equation that solves for the outer radius given the desired area and the radius or the previous circle.