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

set images in circle view with rotation in ios

我正在尝试实现一个视图,其中图像将放置在 circle.I 的边缘,尝试使用 CAShapeLayer 实现它并添加了 UIImageViews,但我想动态创建它。任何帮助都将是 appreciated.I 例如,我正在添加一张图片。

我建议你参考@rob_mayoff

给出的answer

你应该用你想要的图像创建一个圆形的贝塞尔曲线路径 display.Please 并不是说​​这种方法只适用于你想要将相同的图像均匀分布在你想要不同的 circle.If 上的情况图片均匀分布在圆圈上,那你就多下点功夫吧。

您可以尝试两种方式:

  1. 通过计算中心绘制每条圆形贝塞尔曲线路径。并以循环的方式排列它们。你应该做一点数学。请注意,您有主圆的中心点 (x,y),并将子圆围绕中心点 (x,y) 放置,使得每个子圆中心到主圆中心的距离应该相同.要得到圆的分界线的精确坐标,请参考answer。一旦你得到准确的坐标,你就可以把子圆放在这些位置。

我会试着给出一个大概的想法:

假设您有一个中心位于 (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);
       }

现在您可以在每个 'n' 子 (x,y) 点绘制圆形贝塞尔曲线路径

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

  1. 如果您想动态执行所有操作,我认为 1 又是最佳方式。