Используя приведенный ниже код, я пытаюсь заставить мой 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"];