0

ユーザーがビューで位置x、yを選択し、ドットが等距離にある必要がある場合、円形パスに16ドットを追加するにはどうすればよいですか。

したがって、ユーザーがビュー内の場所をヒットすると、16ドットで円が完成します。添付ファイルを参照してください。

ここに画像の説明を入力してください

画像はこのコードからの使用です:

CGPoint CenterPoint = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2);
CGPoint Point;
float Angel = 360/16;

for (int i = 0 ; i < 16;i++)
{
    float distance = [self distanceFrom:newPoint to:centerPoint];
    Point.x = CenterPoint.x + distance * cos(Angel);
    Point.y = CenterPoint.y + distance * sin(Angel);

    CGContextMoveToPoint(cacheContext, Point.x, Point.y);
    CGContextAddLineToPoint(cacheContext, Point.x, Point.y);
    CGContextStrokePath(cacheContext);

    Angel+= 10;
}
4

2 に答える 2

0

以下のコードを確認してください。

int startAngle = 0;

while (startAngle < 360)
{
    CAShapeLayer *slice = [CAShapeLayer layer];
    slice.fillColor = _buttonColor.CGColor;
    slice.strokeColor = [UIColor clearColor].CGColor;
    slice.lineWidth = 3.0;

    CGFloat angle = DEGREES_TO_RADIANS(-60.0);
    CGPoint center = CGPointMake(self.frame.size.width/2.0, self.frame.size.height/2.0);
    CGFloat radius = self.frame.size.width/2.0;

    UIBezierPath *piePath = [UIBezierPath bezierPath];
    [piePath moveToPoint:center];

    //[piePath addLineToPoint:CGPointMake(center.x + radius * cosf(DEGREES_TO_RADIANS(startAngle)), center.y + radius * sinf(DEGREES_TO_RADIANS(startAngle)))];

    [piePath addArcWithCenter:center radius:radius startAngle:DEGREES_TO_RADIANS(startAngle) endAngle:DEGREES_TO_RADIANS(startAngle + 63) clockwise:YES];

    //   [piePath addLineToPoint:center];
    [piePath closePath]; // this will automatically add a straight line to the center
    slice.path = piePath.CGPath;

    startAngle += (360/15);

    [self.layer addSublayer:slice];
}
于 2013-02-12T08:25:11.010 に答える