UIBezierPath圈获得特定点

时间:2015-05-26 12:32:29

标签: ios uikit core-graphics uibezierpath

我想绘制一个大圆圈并放置一些较小的圆圈,如下图所示

circle

我画了大卷 - (void)drawRect:(CGRect)rect

CGFloat rectX = self.frame.size.width / 2;
CGFloat rectY = self.frame.size.height / 2;

CGFloat width = self.frame.size.width-30;
CGFloat height = self.frame.size.width -30;

CGFloat centerX = rectX - width/2;
CGFloat centerY = rectY - height/2;


UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(centerX, centerY, width, height)];

[[UIColor blackColor] set];
[bezierPath stroke];

假设我想在圆圈上找到10个等间距的点,以绘制10个较小的红色圆圈。有智能解决方案吗?提前谢谢。

1 个答案:

答案 0 :(得分:8)

圆的等式是:

x = cx + r * cos(a)
y = cy + r * sin(a)

其中r半径(cx, cy) 来源a 角度

你可以用

绘制一个圆圈
(UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise

的功能是使用CGPoint作为中心,将某些值作为半径。您可以将起始角度和结束角度设置为0和360以绘制圆圈。为小圆圈选择合适的半径,并使用开头提到的等式找到点并绘制圆圈