2

CAShapeLayerを使用して四分円を描いています。シングルタップで90度変形したいのですが、そうするとレイヤーが変形して画面からはみ出してしまいます。中心点を中心に回転が必要です。中心を想定しましょうポイントは (100,100) です。これが私のコードです:

CGMutablePathRef path = CGPathCreateMutable();
//CGPathMoveToPoint(path, NULL, self.bounds.size.width/2, self.bounds.size.height/2);
CGPathAddArc(path, NULL, self.bounds.size.width/2, self.bounds.size.height/2, 100, (0), (M_PI_2), NO);
CGPathAddArc(path, NULL, self.bounds.size.width/2, self.bounds.size.height/2, 100-50, (M_PI_2), (0), YES);
CGPathCloseSubpath(path);

CAShapeLayer* arcLayer = [[CAShapeLayer alloc]init];
arcLayer.path = path;
arcLayer.fillColor = [UIColor yellowColor].CGColor;

[self.layer addSublayer:arcLayer];

アニメーション コード :

  CABasicAnimation *spin = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];

        spin.removedOnCompletion = NO;

        spin.fillMode = kCAFillModeForwards;

        [spin setByValue:[NSNumber numberWithFloat:M_PI_2]];
        //layer.affineTransform = CGAffineTransformMakeRotation(M_PI_2);
        [spin setDuration:1.0];
        [layer addAnimation:spin forKey:@"transform.rotation"];

私を助けてください。

4

2 に答える 2

0

アニメーションの前にレイヤーのアンカーポイントを設定してみてください。例えば:

    layer.anchorPoint = CGPointMake(0.5f, 0.5f);

(0,0) はレイヤーの左上隅、(1,1) は右下隅です。

于 2013-09-20T06:44:25.767 に答える