2015-10-18 42 views
0

大小的标签,我需要画一圈一些大小均匀且间隔标签:绘制甚至绕了一圈

enter image description here

我的目标C。可以创建一个这样的椭圆形

UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(84, 22, 75, 75)]; 
[UIColor.grayColor setFill]; 
[ovalPath fill]; 

试图弄清楚如何获得这些标签,但它。任何人都可以给我一些指导我如何解决这个问题吗?需要围绕圆圈绘制1-20个标签。想知道是否有某种算法。

回答

1

这将需要你做一些数学。我不打算为你做数学,但我可以让你知道你需要做什么。

有六个均匀间隔的标签,圆圈上每个标签的中心点相隔60度。如果我们假设0度是直线上升,那么您希望标签集中在0,60,120,180,240和300度。而且由于它看起来没有看到标签的边缘,我假设每个标签都覆盖了50度的弧度。

它看起来像标签的顶部不平坦,而是更大的圆的部分。如果我们调用图片r中的圆的半径,那么较大圆的半径为r + h,其中h是选项卡的高度。

如果第一个标签的中心位于0度,则第一个标签的左边缘位于-25度(或335度),第一个标签的右边缘位于25度。

因此,绘制第一个标签:

  • 发现内圆是在335度的角度。然后找到外圈上335度的点。在这两点之间画一条线。这是选项卡的左边缘。
  • 找到25度内圆上的点。然后找到外圆上的相应点并在它们之间划一条线。这是该选项卡的右边缘。
  • 绘制两个外圆点之间半径为r + h的50度弧。
  • 您的选项卡已绘制。

然后对以60度为中心的弧做同样的事情。你的线将在25和85度。对其他选项卡重复该过程。

要在给定角度找到一个圆上的点,请参见Calculating point on a circle's circumference from angle in C#?

要绘制弧线,请参阅http://www.raywenderlich.com/33193/core-graphics-tutorial-arcs-and-paths

如果标签覆盖的弧度大于或小于50度,请相应地调整上面的数字。也就是说,如果标签覆盖40度的弧度,那么第一个标签的左边缘将是-20(340)度,而不是-25(335)度。

请注意,您可能需要将所有度数测量转换为弧度。

+0

感谢您的支持! – Kex