私はQuartz 2Dにかなり慣れていません。
次のシナリオを想像してください。
円形のミニ マップ ビューが表示されます。地図の上に三角形を描いています(今は弧は重要ではありません)。この形状は可視領域を表します。
ユーザーが向きを変えると、ミニマップに沿って三角形を回転させる必要があります。
現在、これはパスがどのように描画されているかです:
CGAffineTransform transform = CGAffineTransformMakeRotation(angleInRadians);
CGPath visibleAreaPath = CGPathCreateMutable();
CGPathMoveToPoint(visibleAreaPath, &transform, miniMapCenter.x, miniMapCenter.y);
CGPathAddLineToPoint(visibleAreaPath, &transform, 18.0, 8.0);
CGPathAddLineToPoint(visibleAreaPath, &transform, 66.0, 8.0);
CGPathCloseSubpath(visibleAreaPath);
次に、次のように CAShapeLayer を使用してパスを描画します。
CALayer *rootLayer = [visibleAreaView layer];
visibleAreaShape = [CAShapeLayer layer];
[visibleAreaShape setFillColor:[UIColor colorWithHue:0.584 saturation:0.8 brightness:0.9 alpha:0.6].CGColor];
[visibleAreaShape setFillRule:kCAFillRuleNonZero];
[visibleAreaShape setAnchorPoint:CGPointMake(0.5, 0.5)];
[rootLayer addSublayer:visibleAreaShape];
[visibleAreaShape setPath:visibleAreaPath];
パスは回転していますが、指定された原点に基づいていません。私が望むのはパスを回転させることであるため、レイヤーのアンカーポイントを設定しても役に立たないことに注意してください(ミニに表示されるポイントを決定するために使用するため、最終的には表示する必要さえありません地図)。
これを達成する方法についてのアイデアはありますか? ありがとうございました。