【问题标题】:Circle with different colors不同颜色的圆圈
【发布时间】:2012-10-03 09:42:04
【问题描述】:

我是 iPhone 新手。我想在里面画一个不同颜色的圆圈。并且所有颜色应覆盖相同的区域。就像我想在里面有 10 种不同的颜色。然后每种颜色应覆盖圆圈的 1/10 区域。我不是想在这里画饼图。也不要尝试使用 10 种不同的颜色。只需要 10 个相等的圆形部分,每个部分都可以填充颜色。 我正在尝试建造一个幸运轮。这样较小的轮子在较大的轮子上方。然后我想分别拖动它们。 也可以在 Core Animation 的帮助下做到这一点吗?

【问题讨论】:

  • 所以它应该看起来像一个十块大小相等的饼图但不是饼图?
  • 您是否需要以任何方式为不同部分设置动画(您询问的是 Core Animation 但没有提及任何动画)?
  • 其实我正在尝试建造一个幸运轮。这样较小的轮子在较大的轮子上方。然后我想分别拖动它们
  • 所以圆圈本身并没有改变它们的外观,它们只是围绕它们的中心旋转?
  • 是的,当我们拖动它们时,它们会围绕中心旋转。

标签: iphone xcode core-animation geometry


【解决方案1】:

模棱两可的问题。如果您绘制一个具有 10 个相等区域的饼图,那么每个区域将覆盖该区域的 1/10,从而满足您的要求,不是吗?

一个圆有 360°,所以除以 10,每个楔形应该有 36°。现在你只需要画 10 个楔子,这个页面应该可以帮助你:

http://www.raywenderlich.com/2106/core-graphics-101-arcs-and-paths

【讨论】:

    【解决方案2】:

    既然你说不想要馅饼片,那你要不要用同心环来代替?

    您确定要等面积吗?这将使环的厚度不同。最里面的环会相当厚,向外的每个环都会变薄。更薄,在外圈上。

    我们的眼睛已经习惯了靶心结构,每个环的厚度都相同。

    无论如何,您都应该查看 CAShapeLayer 对象。您可以为每个环创建一个形状图层,该图层定义一个包含 2 个圆圈的闭合路径。有一种叫做“缠绕规则”的东西可以让你确定路径重叠时会发生什么。我认为您需要奇偶路径缠绕 (kCAFillRuleEvenOdd)。

    要使环的面积相等,您可以这样做:

    首先计算整个圆的面积。除以环数。这是每个环所需的区域让我们称该区域为“a”。从中心开始。该环(圆)的半径将为 sqrt(pi/a)。

    对于接下来的每个圆环,您需要根据外圆的面积减去构成圆环的内圆的面积来计算圆环的厚度。您需要编写一个方程来求解给定所需区域和半径或前一个圆的外半径。

    【讨论】:

      猜你喜欢
      • 2013-12-19
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2016-09-09
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 2017-05-30
      相关资源
      最近更新 更多