CALayer - CABasicAnimation not scaling around center/anchorPoint

core-animation, ios

Solution

What is the `bounds` of your layer?

I bet it has zero size; try setting its size to the same size as your shape.

`CAShapeLayer` draws the shape as kind of an overlay, independent of the `contents` (and `bounds` and `contentsGravity` and etc.) that you'd use in an ordinary `CALayer`. It can be a bit confusing.

Problem

Using the code below I've been trying to get my CALayer to scale around its center - but it scales by left/top (0,0). I saw this question: Anchor Point in CALayer and have tried setting the anchorPoint - but it was [.5, .5] before I set it and setting makes no difference. Also tried setting `contentsGravity`. The set up is I have a `CAShapeLayer` added to `self.view.layer` I do some drawing in it and then add the CABasicAnimation. The animation runs fine - but it scales toward the top/left - not the center of the view. Have been tinkering with this for a few hours - it must be something simple but I'm not getting it. ``` 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"]; ```

Original source

Related problems