Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ios中旋转设置圆形视图中的图像_Ios_Uiimageview_Cashapelayer - Fatal编程技术网

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

在ios中旋转设置圆形视图中的图像,ios,uiimageview,cashapelayer,Ios,Uiimageview,Cashapelayer,我正在尝试实现一个视图,其中图像将放置在圆的边缘。我尝试使用CAShapeLayer创建它,并添加UIImageView,但我希望动态创建它。任何帮助都将不胜感激。我正在添加一个图像为例 我建议您参考@rob\u mayoff提供的信息 您应该使用要显示的图像创建一个圆形贝塞尔路径。请注意,此方法仅适用于希望相同图像均匀分布在圆上的情况。如果希望不同图像均匀分布在圆上的情况,则应付出更多努力 您可以通过两种方式进行尝试: 通过计算圆心绘制每个圆形贝塞尔路径。以循环的方式排列。你应该做一点数学。请

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


我建议您参考@rob\u mayoff提供的信息

您应该使用要显示的图像创建一个圆形贝塞尔路径。请注意,此方法仅适用于希望相同图像均匀分布在圆上的情况。如果希望不同图像均匀分布在圆上的情况,则应付出更多努力

您可以通过两种方式进行尝试:

  • 通过计算圆心绘制每个圆形贝塞尔路径。以循环的方式排列。你应该做一点数学。请注意,主圆有一个圆心(x,y),并围绕圆心(x,y)放置子圆,使每个子圆中心到主圆中心的距离相同。要获得分割圆的直线的精确坐标,请参阅。获得精确坐标后,可以将子圆放置在这些位置
  • 我将尝试给出一个大致的想法:

    假设你有一个中心在(x0,y0)的主圆。您希望通过将圆划分为“n”个部分,在这个圆上放置图像。因此,您可以在此主圆上放置“n”个ImageView。下图中的“n”部分用绿线表示

    每条绿线之间的角度为360度/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)点绘制圆形贝塞尔路径

    使用
    addarchwithcenter:center
    ,其中center将是计算出的子对象(x,y)

  • 我认为如果你想动态地做每件事,1也是最好的方法

  • 好的,我会尝试这个答案,但是你能告诉我什么是x0和y0,我如何得到它的值x0和y0是圆心的值吗