在 ios 中旋转并在圆形视图中设置图像
set images in circle view with rotation in ios
我正在尝试实现一个视图,其中图像将放置在 circle.I 的边缘,尝试使用 CAShapeLayer 实现它并添加了 UIImageViews,但我想动态创建它。任何帮助都将是 appreciated.I 例如,我正在添加一张图片。
我建议你参考@rob_mayoff
给出的answer
你应该用你想要的图像创建一个圆形的贝塞尔曲线路径 display.Please 并不是说这种方法只适用于你想要将相同的图像均匀分布在你想要不同的 circle.If 上的情况图片均匀分布在圆圈上,那你就多下点功夫吧。
您可以尝试两种方式:
- 通过计算中心绘制每条圆形贝塞尔曲线路径。并以循环的方式排列它们。你应该做一点数学。请注意,您有主圆的中心点 (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 又是最佳方式。
我正在尝试实现一个视图,其中图像将放置在 circle.I 的边缘,尝试使用 CAShapeLayer 实现它并添加了 UIImageViews,但我想动态创建它。任何帮助都将是 appreciated.I 例如,我正在添加一张图片。
我建议你参考@rob_mayoff
给出的answer你应该用你想要的图像创建一个圆形的贝塞尔曲线路径 display.Please 并不是说这种方法只适用于你想要将相同的图像均匀分布在你想要不同的 circle.If 上的情况图片均匀分布在圆圈上,那你就多下点功夫吧。
您可以尝试两种方式:
- 通过计算中心绘制每条圆形贝塞尔曲线路径。并以循环的方式排列它们。你应该做一点数学。请注意,您有主圆的中心点 (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 又是最佳方式。