以下のコードを使用して、CALayerをその中心を中心にスケーリングしようとしていますが、左/上(0,0)でスケーリングします。私はこの質問を見ました:CALayerのアンカーポイントとanchorPointの設定を試みました-しかし、設定する前は[.5、.5]であり、設定しても違いはありません。また、設定してみcontentsGravity
ました。
セットアップは、CAShapeLayer
追加しself.view.layer
て、描画を行ってからCABasicAnimationを追加します。アニメーションは正常に実行されますが、ビューの中心ではなく、上/左に向かって拡大縮小されます。
数時間これをいじくり回してきました-それは単純なものに違いありませんが、私はそれを理解していません。
shapeLayer.anchorPoint = CGPointMake(.5,.5);
shapeLayer.contentsGravity = @"center";
printf("anchorPoint %f %f\n", shapeLayer.anchorPoint.x, shapeLayer.anchorPoint.y);
CABasicAnimation *animation =
[CABasicAnimation animationWithKeyPath:@"transform.scale"];
animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.1, 0.1, 1.0)];
[animation setDuration:1.0];
animation.fillMode=kCAFillModeForwards;
animation.removedOnCompletion=NO;
[shapeLayer addAnimation:animation forKey:@"zoom"];