Масштабируйте и центрируйте калибр, чтобы контролировать

Когда я масштабирую слой, результат всегда имеет исходную точку, установленную в CGPoint (0,0). Как лучше всего убедиться, что после масштабирования слой все еще находится в центре своего суперслоя?

[CATransaction begin];
[CATransaction setAnimationDuration: 0];
[CATransaction setDisableActions: TRUE];

self.maskLayer.transform = CATransform3DScale(CATransform3DIdentity, .8, .8,1);
self.maskLayer.position = CGPointMake(kScreenWidth/2,kScreenHeight/2);

[CATransaction commit];

person prostock    schedule 31.07.2012    source источник


Ответы (1)


Вам нужно установить AnchorPoint слоя в его центр:

self.maskLayer.anchorPoint = CGPointMake(0.5, 0.5);

а затем установите его положение в центр своего суперслоя

self.maskLayer.position = (CGPoint){CGRectGetMidX(superLayer.bounds), CGRectGetMidY(superLayer.bounds)};
person Ashley Mills    schedule 31.07.2012
comment
Я пробовал это, но он не перемещает слой. как внутри, так и вне коммита. я отредактировал свой вопрос, чтобы включить его - person prostock; 01.08.2012
comment
Кроме того, я проверил точку привязки, она по-прежнему по умолчанию равна 0,5,0,5. - person prostock; 01.08.2012