在ios中旋转设置圆形视图中的图像

时间:2016-06-29 14:27:11

标签: ios uiimageview cashapelayer

我正在尝试实现一个视图,其中图像将放置在circle的边缘。我尝试使用CAShapeLayer并添加UIImageViews,但我想动态创建它。任何帮助将不胜感激。我正在添加一个图像。

enter image description here

1 个答案:

答案 0 :(得分:2)

我建议你参考@rob_mayoff

给出的answer

您应该使用要显示的图像创建圆形贝塞尔曲线路径。请注意,只有当您想要在圆上均匀分布相同的图像时,此方法才有效。如果您希望将不同的图像均匀分布在圆上,那么你应该付出更多的努力。

您可以尝试两种方式:

  1. 通过计算它们的中心来绘制每个圆形贝塞尔曲线路径。并以循环方式安排它们。你应该做一点数学。请注意,您有主圆的中心点(x,y),并将子圆放置在中心点(x,y)周围,使得每个子圆心到主圆心的距离应相同。要获得划分圆的线的精确坐标,请参阅answer。一旦得到确切的坐标,就可以将子圈放在这些位置。
  2. 我会尝试对此做一个粗略的想法:

    考虑你有一个主圆,其中心位于(x0,y0)。并且您希望通过将圆圈划分为' n'来将图像放置在此圆上。部分。这样你就可以放置' n'此主圆上的imageView数量。 ' n'部件在下图中用绿线表示。

    每条绿线之间的角度为360deg / n

    不,我们需要每条绿线的终点。哪个可以从:

    获得
     sub.x = x0 + r * cos(angle);
     sub.y = y0 + r * sin(angle);
    

    其中r是主圆的半径。

    这是一个子圆圈。在你的情况下,你有' n'子圆的数量,所以让我们循环来获得所有子圆心点:

          for(i = 1 to n)
            {
                angle = i * (360/n);
                sub.x = x0 + r * cos(angle);
                sub.y = y0 + r * sin(angle);
           }
    

    enter image description here

    现在,您可以在每个“&n”处画一条圆形贝塞尔曲线。 sub(x,y)points

    使用addArcWithCenter:center,其中中心将是计算的子(x,y)

    1. 如果你想动态地做所有事情,我认为1再次是最佳方式。